我是Google电子表格中的一位新的脚本编辑器,而不是程序员。 我一直在使用谷歌文档已经有一段时间了,它已经成为我日常活动中的一个重要工具。 我想要做的事情如下: 寻找一个整体文档(带有整体表单,例如“1”,“2”,“3”等等,对应于一个月可以保存的天数),如果列7显示一个确定的值(在我的情况下,它将是RECEBER),拉出该行的所有数据并写入为此目的而创建的表单中。 发生什么事是我正在使用事件onEdit触发此功能。乍一看,这将是理想的,但在我的情况下,我复制了其他电子表格中的大量数据,并且paste命令不会触发onEdit事件。相反,我必须手动编辑单元格才能将该行复制到另一个表单上。 我只能运行一次,一旦这个月的整个日子都满了,还有什么变化可做,但我真正想要做的就是立即将内容插入到电子表格中。将数据提取到文档中的特定工作表
我的代码还有另一个问题,它必须适合所有其他工作表,因为如果活动工作表等于“1”,if子句才会执行完整操作。无论如何,我相信这是一个简单的解决方案。
这里有已经花了我一半的网找到的代码:
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "1" && r.getColumn() == 7 && r.getValue() == "RECEBER") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("money");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
}
}
我会感激所有帮助你可以给。 在此先感谢。
迪奥戈·索萨
- 更新12Oct -
我已经改变了我的代码逻辑,并作为patt0建议,我从运行创建菜单的脚本。我试过调整代码,但我认为有一些部分是错误的。脚本运行,但在我的目标工作表上没有写任何东西。
下面的代码:
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [ {name: "RECEBER", functionName: "RECEBER"} ];
ss.addMenu("Scripts", menuEntries);
}
function mustBeCopied(sheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetNumber = parseInt(sheetName);
if (sheetNumber <=31 && sheetNumber >=1)
return true;
return false;
}
function RECEBER() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var r = ss.getActiveRange();
if(mustBeCopied(s.getName()) && r.getColumn() == 7 && r.getValue() == "RECEBER") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("money");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
}
}
功能Mustbecopied,从我相信,只设置片(1〜31)资格的范围内; 函数RECEBER将确定列7上的值是否满足条件(RECEBER),因此它可以检索所有行信息并将其移动到目标工作表。
也许麻烦是积极的事情..我可以在我自己的优势,并将脚本应用到选定的工作表? 此外,如果我可以同时拥有这两个选项(无论是将其应用于选定的表格还是应用于整个文档),那么这将会非常棒,并简化我的日常工作!
感谢您的快速回复。 –
我用你的代码,它的工作完美无瑕。现在它可以适应我希望的任何纸张范围,而无需每次将其应用于新纸张时更改代码。 我只是认为,只要将新内容粘贴到从其他电子表格中提取的文档上,onEdit事件就会响应。在插入新数据时,应将其解释为对工作表的有效编辑。有没有解决方法? 非常感谢您的时间和关注。 –
也许如果我每次打开电子表格都可以运行这个脚本,那会更好。我尝试用onOpen交换onEdit,但似乎没有运行。 无论如何,这是一个好主意,因为每次打开电子表格时,脚本都会运行,并在targer表单上显示最新结果。对此有任何意见都欢迎。 顺便说一句,我回复在拨款领域? –