clearContent不会在Google表格脚本中运行onChange

时间:2016-06-19 11:52:24

标签: google-apps-script google-sheets

当指定的单元格(B4:B8)发生更改时,我编写了一个脚本来清除一系列单元格(C1)。但是,编辑指定的单元格时,单元格不会被清除。这是脚本:

function onChange() {
 var sheet = SpreadsheetApp.getActive().getSheetByName('Quality Control').getRange('C1');
 ScriptApp.newTrigger("clearRange")
   .forSpreadsheet(sheet)
   .onChange()
   .create();
}

function clearRange() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Quality Control');
  sheet.getRange('B4:B8').clearContent();
}

函数onChange设置为运行onOpen(触发器)。

知道为什么这个脚本不起作用?

1 个答案:

答案 0 :(得分:0)

简短回答

不是通过代码创建触发器而是手动创建它。设置触发器直接调用clearRange()。

解释

问题中的脚本无法正常工作,因为存在错误,但修复错误可能更好地手动设置触发器,否则每次打开电子表格时都会创建新的触发器。

要手动创建触发器,请按照https://developers.google.com/apps-script/guides/triggers/installable#managing_triggers_manually

中的说明操作
  

手动管理触发器

     

通过中的对话框手动创建可安装的触发器   脚本编辑器,请按照下列步骤操作:

     
      
  1. 从脚本编辑器中选择Resources>当前项目的触发器。
  2.   
  3. 点击以下链接:未设置触发器。点击这里,马上添加一个。
  4.   
  5. 在“运行”下,选择要触发的功能名称。
  6.   
  7. 在“事件”下,选择“时间驱动”或脚本绑定的Google App(例如,“从电子表格”)。
  8.   
  9. 选择并配置要创建的触发器类型(例如,每小时运行的小时计时器或打开的触发器)。
  10.   
  11. (可选)单击通知以配置触发功能失败时如何以及何时通过电子邮件联系您。
  12.   
  13. 点击保存。
  14.   

关于问题代码的评论

json要求.forSpreadsheet(sheet)为电子表格对象,但您的代码会为sheet变量指定范围。

来自https://developers.google.com/apps-script/reference/script/spreadsheet-trigger-builder#onchange

sheet

请参阅https://developers.google.com/apps-script/troubleshooting了解如何在Google Apps脚本编辑器上使用调试工具