0

我有一个谷歌表,它有一个基于定时触发器的自动刷新 IMPORTXML 功能,我正在尝试编写一个脚本,当它检索到具有“帮助”消息类型的行时,它将自动通过电子邮件发送通知警报。

我根据我找到的一些示例编译了这个脚本。我已经对其进行了测试,它可以很好地使用带有 onEdit 可安装触发器的手动输入数据,但从我的测试(并基于研究)来看,我需要使用 onChange 触发器来让 IMPORTXML 触发脚本。

但是,当我将脚本设置为 onChange 可安装触发器时,该脚本似乎既不会使用 IMPORTXML 加载数据自动执行,也不会由我在工作表上手动输入。

我是否遇到了 Good Apps Script 的一些限制?这是我第一次使用它(和 JavaScript)

function helpAlertEmail(e) 
{
  if (e.range.columnStart !== 5 || e.value !== 'HELP' && e.value !== 'HELP-CANCEL') return;
  var ss = e.source.getActiveSheet()
  var details = ss.getRange(e.range.rowStart, 1, 1,11).getValues()[0];
  var headers = ss.getRange(1, 1, 1, 11).getValues()[0];
  var subject = "SPOT BEACON ALERT:  " + details[2] + " Sent a " + details[4] + " Message at " + details[9];
  var body = "SPOT Beacon " + details[2] + " (" + details[1] + ")  Sent a " + details[4] + " Message at " + details[9] +  "\n\n";
  var email = "xxx@xxx.org";
  var cols = [0, 4, 5, 6, 9, 10];

  for (var i = 0; i < details.length; i++) 
  {
    if (cols.indexOf(i) === -1) continue;
    body += headers[i] + ": " + details[i] + "\n"
  }

  body += "\n\n\n Please do not respond to this email as it is automatically generated by an account that is not checked.";
  MailApp.sendEmail(email, subject, body, {noReply:true});
}
4

1 回答 1

2

根据您对用例的解释,我希望您知道这一点:

1) onEdit - 指定在编辑电子表格时触发的触发器。

2) onChange - 指定当电子表格的内容或结构发生更改时将触发的触发器。

这些是谷歌规定的条件。

现在它没有告诉我们的是:

1)编辑必须是手动的

现在您说您也手动尝试过,但触发器没有触发。一个可能的原因是您可能从某个地方复制了数据,然后将其粘贴到您想要的位置。因此,您不能指望触发器在这种情况下触发。

2)编辑不能是任何形式的自动化(不能使用电子表格公式或任何脚本来完成)。在这种情况下,触发器也不会触发。

因此,总而言之,您所面临的并不是Google 规定的任何限制的结果。可悲的是,它就是这样。

您需要做的是,想出另一种方法来实现您想要实现的目标,即使用除onChangeonEdit触发器之外的其他东西。

于 2017-01-11T13:01:55.023 回答