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

时间:2019-09-18 17:03:41

标签: google-apps-script triggers

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

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

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

2 个答案:

答案 0 :(得分:1)

做这样的事情

function myOnchangeFunction(e) {
  if(e.changeType=='EDIT') {
    return;
  }
}

答案 1 :(得分:1)

有一个事件对象,其中包含有关触发时触发触发器的上下文的信息。对于Google表格,事件对象具有一个changeType参数,该参数是描述更改类型的字符串。如Event Objects Documentation中所述,它可以采用以下字符串值:

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

库珀的答案将起作用,尽管还有其他所有更改类型,包括全部捕获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中正常设置可安装的触发器。