当单元格值更改时会触发 Google Sheet 脚本 onChange

问题描述 投票:0回答:2

我通过“工具”->“脚本编辑器”->“编辑”->“当前项目的触发器”->... 将 onChange 触发器添加到我的 Google 工作表中 我认为 onChange 仅在数据/工作表的结构发生更改时才会触发,例如添加或删除行和/或列。但是,测试显示当单元格值更改时也会触发 onChange。

因此 onChange 触发器的行为几乎与 onEdit 触发器相同。我试图避免 onEdit 触发器,因为它触发得太频繁,这会降低 Google Sheet 的速度。

理想情况下,我希望仅在添加新行和/或列时触发 onChange。任何帮助将不胜感激!

google-sheets google-apps-script triggers
2个回答
3
投票

有一个事件对象,其中包含有关触发触发时的上下文的信息。对于 Google Sheets 的情况,事件对象有一个

changeType
参数,它是描述更改类型的字符串。如事件对象文档中所述,这可以采用以下字符串值:

  • EDIT
  • INSERT_ROW
  • INSERT_COLUMN
  • REMOVE_ROW
  • REMOVE_COLUMN
  • INSERT_GRID
  • REMOVE_GRID
  • OTHER

Cooper 的答案将会起作用,尽管还有其他更改类型,包括包罗万象的

OTHER
,它也会使该功能在编辑(例如排序范围或插入图像)时触发。尝试这样的事情:

function onChange(e){
  if(e.changeType == 'INSERT_ROW' || e.changeType == 'INSERT_COLUMN'){
    // your code here
  }
  else {
    return;
  }
}

然后在

Edit > Current project's triggers > + Add Trigger
中照常设置可安装的触发器。


2
投票

做这样的事情

function myOnchangeFunction(e) {
  if(e.changeType=='EDIT') {
    return;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.