【问题标题】:Google script that triggers copy of a range to another spreadsheet - NOT WORKING for me触发将范围复制到另一个电子表格的 Google 脚本 - 不适合我
【发布时间】:2019-02-22 19:48:40
【问题描述】:

我的 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);
   }

【问题讨论】:

  • onEdit是如何触发的?它通常由手动编辑单元格触发。
  • 是的,onEdit 是通过手动编辑 sourceFile1 中的单元格来触发的。当我开始手动编辑时,脚本的其余部分会真正被触发和执行。只有上面的代码没有被执行。

标签: google-apps-script google-sheets triggers


【解决方案1】:
  • 在您的脚本中,当您使用脚本编辑器运行 onEdit() 时,它可以工作。
  • 但是当函数作为 OnEdit 触发器运行时,它不起作用。
  • 在这种情况下,您是电子表格和脚本的所有者。

如果我的理解是正确的,那么这个答案呢?

我认为在您的脚本中,当 OnEdit 事件运行时,在var destinationFile = SpreadsheetApp.openById(" "); 处会出现与授权相关的错误。当您想确认这一点时,请在函数作为 OnEdit 触发器运行后检查脚本编辑器的执行记录。

那么作为一个解决方案,将函数安装为可安装触发器怎么样?

注意:

  • 你的情况,因为出现授权错误,可以安装函数名onEdit()作为可安装的Triggers。但我建议将函数名称从onEdit() 修改为其他。例如,它就像installed_onEdit()
    • 因为函数名onEdit()的函数是作为简单触发器运行的,所以当onEdit()作为可安装触发器安装时,onEdit()作为简单触发器和可安装触发器运行2次。

参考资料:

如果我误解了您的问题并且这不是您问题的解决方案,我深表歉意。

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2016-06-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多