我的Google Apps脚本出现问题,应触发将范围复制到另一个Google电子表格。奇怪的是,如果通过“脚本编辑器”启动脚本,则该脚本可以完美运行。但是它不能通过触发器(onEdit)工作。
脚本本身更长,并且可以成功触发同一张电子表格中与数据处理相关的所有操作。仅特定范围到另一个电子表格的副本无效。但是正如我所提到的,如果通过脚本编辑器运行它,它将起作用。
请在下面看到我的脚本的简单表示形式:
function onEdit(e){
var sourceFile1 = SpreadsheetApp.getActiveSpreadsheet();
var sheet = sourceFile1.getActiveSheet();
var selectedRange = sheet.getRange(44,1, 1, 29);
var sourceData = selectedRange.getValues();
var destinationFile = SpreadsheetApp.openById(" ");
var destinationSheet = destinationFile.getSheetByName("Orders");
var lastRow = destinationSheet.getLastRow();
lastRow = lastRow + 1;
destinationSheet.getRange(lastRow, 1, 1, 29).setValues(sourceData);
}
答案 0 :(得分:2)
onEdit()
时,它可以工作。如果我的理解正确,那么这个答案如何?
我认为在您的脚本中,运行OnEdit事件时,在var destinationFile = SpreadsheetApp.openById(" ");
处发生了与授权有关的错误。如果要确认这一点,请在函数作为OnEdit触发器运行后检查脚本编辑器的执行记录。
作为解决方案,如何将功能安装为可安装的触发器?
onEdit()
作为可安装的触发器。但是我建议将功能名称从onEdit()
修改为其他名称。例如,它类似于installed_onEdit()
。
onEdit()
函数名称的功能是作为简单触发器运行的,因此,当onEdit()
被安装为可安装触发器时,onEdit()
的运行次数是简单触发器和可安装触发器的两倍触发器。如果我误解了您的问题,而这不是您问题的解决方案,我深表歉意。