Google apps script 在脚本中使用Google工作表公式

Google apps script 在脚本中使用Google工作表公式,google-apps-script,google-sheets,Google Apps Script,Google Sheets,每次在我的google工作表中添加一个新条目后,我需要一个脚本来验证单元格的组合,然后确保在发送电子邮件之前验证的输出已经更改。我知道如何使用电子表格中的公式进行验证并提供正确的输出,我知道如何让脚本检查该字段并运行。当有人从用户界面编辑工作表时,此操作有效。问题是电子表格没有通过UI更新(它是通过IFTTT配方进行的),因此我认为在脚本运行之前验证字段没有重新计算,这意味着没有发送电子邮件 以下公式和脚本在通过UI更新时可以完美地工作。我的问题是-有没有办法用电子表格中的公式计算下面脚本中的“

每次在我的google工作表中添加一个新条目后,我需要一个脚本来验证单元格的组合,然后确保在发送电子邮件之前验证的输出已经更改。我知道如何使用电子表格中的公式进行验证并提供正确的输出,我知道如何让脚本检查该字段并运行。当有人从用户界面编辑工作表时,此操作有效。问题是电子表格没有通过UI更新(它是通过IFTTT配方进行的),因此我认为在脚本运行之前验证字段没有重新计算,这意味着没有发送电子邮件

以下公式和脚本在通过UI更新时可以完美地工作。我的问题是-有没有办法用电子表格中的公式计算下面脚本中的“值”变量

表格“状态”单元格“D2”中的公式:

=IF((COUNTIF)索引(data!A1:D5032),(SUMPRODUCT)(MAX((data!A:A=“meloc”)*(ROW(data!A:A()(())(data!A(()()))),4),“entered”)+COUNTIF(INDEX)(data!A1:D5032,(SUMPRODUCT

通过UI编辑工作表时,与OneEdit触发器配合使用的脚本:

function myNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var value = ss.getSheetByName("state").getRange("D2").getValue();
  if( value > 0 ) {
    var last = ScriptProperties.getProperty("last");
    value = value.toString();
    if( value != last ) {
      MailApp.sendEmail('trigger@recipe.ifttt.com', 'Status #'+value+'\n\n',
                        '1="not here", 9="here": '+value+'\n\n', {
                        cc: 'myemail@gmail.com'
                        });
      ScriptProperties.setProperty("last", value);
    }
  }
}

你所发现的东西是无法被利用的。当前,当外部代码使用电子表格或驱动api更改内容时,不会调用这些触发器

如果你需要它实时工作,这是不可能的。否则,如果您可以接受1分钟的延迟,则可以使用重复出现的1分钟触发器检查电子表格上上次修改的日期是否已更改(通过与以前存储在脚本属性上的日期进行比较)


如果更改了,请重新处理整个工作表。

谢谢您的回复。是像每分钟触发一次脚本那样简单,还是需要添加其他代码?我不知道的一部分是,公式是否在每次api更改后重新计算。试试看。不确定公式是否会立即重新计算。将脚本设置为每分钟触发一次非常有效。无需其他更改。非常感谢。