Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当IFTTT编辑电子表格时,onChange不触发_Javascript_Google Apps Script_Google Sheets_Triggers - Fatal编程技术网

Javascript 当IFTTT编辑电子表格时,onChange不触发

Javascript 当IFTTT编辑电子表格时,onChange不触发,javascript,google-apps-script,google-sheets,triggers,Javascript,Google Apps Script,Google Sheets,Triggers,我有一个IFTTT触发器集,用于在向IFTTT发送短信时向电子表格添加一行 我正在尝试编写一个电子表格GoogleApps脚本,将相应的行添加到电子表格中的其他工作表中。它应该在IFTTT添加行时触发,但到目前为止,它只在我手动更改电子表格中的某些内容时触发,而不是在IFTTT执行此操作时触发 我想要基本上与相同的功能。我使用该答案中的Mogsdad代码生成fakeEvent并将其交给onEdit()函数,但我仍然无法让它自动启动 当所讨论的更改将由脚本进行时,是否有一些特殊的方法来实现onCh

我有一个IFTTT触发器集,用于在向IFTTT发送短信时向电子表格添加一行

我正在尝试编写一个电子表格GoogleApps脚本,将相应的行添加到电子表格中的其他工作表中。它应该在IFTTT添加行时触发,但到目前为止,它只在我手动更改电子表格中的某些内容时触发,而不是在IFTTT执行此操作时触发

我想要基本上与相同的功能。我使用该答案中的Mogsdad代码生成fakeEvent并将其交给onEdit()函数,但我仍然无法让它自动启动

当所讨论的更改将由脚本进行时,是否有一些特殊的方法来实现onChange

以下是相关代码:

最后我将onEdit()调用更改为changeIt(),这样我就知道是onChange触发器触发的,而不是onEdit。我还拿出了处理同时发生的事件的东西,因为我没有预料到任何事情


正如我所说,这个脚本在自己编辑工作表时非常有效,但在IFTTT更改之后就不行了。有什么想法吗?谢谢

不幸的是,onChange和onEdit仅在从web sheeta版本(而不是从api或移动应用程序)进行更改时才被调用。othwr问题涉及如何以其他方式检测变化(我最近回答了一个问题,请参阅我的个人资料答案)啊,我希望情况并非如此。哦,好吧。我在一个类似的问题上看到了你的1分钟间隔触发想法,所以我将使用它。谢谢
function createChangeTrigger() {
  var sheet = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("playCatchUp")
   .forSpreadsheet(sheet)
   .onChange()
   .create();
}

// Installable trigger to handle change or timed events
// Something may or may not have changed, but we won't know exactly what
function playCatchUp(e) {
  // Check why we've been called
  if (!e)
    Logger.log("playCatchUp called without Event");
  else {
    if (e.hasOwnProperty("changeType")) {
      Logger.log(e.changeType);
    }    
  }

  // Build a fake event to pass to onEdit()
  var fakeEvent = {};
  fakeEvent.source = SpreadsheetApp.getActiveSpreadsheet();
  var lastRow = fakeEvent.source.getActiveSheet().getLastRow();
  fakeEvent.range = fakeEvent.source.getActiveSheet().getRange(lastRow, 1, 1, 3);
  Logger.log(fakeEvent.range.getRow());
  changeIt(fakeEvent);
}