【问题标题】:Trigger a script when a formula changes a cell value当公式更改单元格值时触发脚本
【发布时间】:2017-03-15 16:08:04
【问题描述】:

我正在使用 Google 脚本,然后在 Google 表格中的某个列发生更改时发送一封电子邮件。单元格中的信息可以手动输入,也可以根据其他单元格中的信息使用公式完成。

当手动输入信息时脚本可以正常工作,但在公式运行时则不行。我已经阅读并意识到公式计算不算作编辑,那么如何让脚本运行?

当前设置为在有编辑时从电子表格触发。

以下是我的脚本中涵盖相关列/单元格的部分。

function sendEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var row = sheet.getActiveRange().getRow();
  var cellvalue = ss.getActiveCell().getValue().toString();

   if(sheet.getActiveRange().getColumn() == 12)

脚本中包含更多内容,所以我没有将所有内容都复制到这里。非常感谢。

【问题讨论】:

  • 您的脚本是否通过 onEdit 触发器运行?如果是这样,是否检查以查看编辑了哪个单元格?如果是,那么您可能需要检查手动更改并导致公式更改值的单元格。您能否将代码包含在您的帖子中以便也可以查看?

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


【解决方案1】:

当公式更改时,没有可以运行的触发器。

试着弄清楚,你的公式取决于什么条件:

  1. 如果它是另一个单元格,手动输入,然后使用这些单元格触发它的更改 onEdit
  2. 如果公式从外部源导入数据,使用随机或时间函数,您最好使用onTime trigger。
  3. 如果公式使用importrange,则转到您导入的范围并查看原始范围,返回步骤 1 → 2...

【讨论】:

  • 我使用的公式是 =IF(AND(G280),"Approved","")。如果 G 的值大于 1000,则有人手动在 L 列中输入注释。这样做确实允许脚本运行,但如果公式完成单元格,显然不会。
  • 你是对的,触发器只有在你改变G28时才能运行。该公式不会影响触发器。这就是我的答案。
  • 感谢您的详细回答,答案很有帮助,但不幸的是,计算单元格中的更改无法触发脚本:(现在我必须重建整个脚本并将公式容纳在改为脚本!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
相关资源
最近更新 更多