首页 文章

在脚本中使用Google Sheet Formula

提问于
浏览
0

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

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

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

= IF((COUNTIF(INDEX(数据!A1:D5032,(SUMPRODUCT(MAX((数据!A:A = "meloc")(ROW(数据!A:A))))),4),“输入")+COUNTIF(INDEX(data!A1:D5032,(SUMPRODUCT(MAX((data!A:A=" youloc ")(ROW(data!A:A))))),4),"输入“))> 0,9999999999999,1111111111111)

通过UI编辑工作表时,使用onEdit触发器工作正常的脚本:

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);
    }
  }
}

1 回答

  • 0

    你找到的东西不能干活 . 当外部代码使用电子表格或驱动api更改内容时,当前不会调用这些触发器 .

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

    如果它改变了,再次处理整个表格 .

相关问题