首页 > 解决方案 > 使用 setValue() 时 InstallableTriger 不会触发

问题描述

我目前正在从事 GAS 项目,并面临一个奇怪的问题。

我已经设置了一个可安装的触发器来检测 A 列中的任何变化,并启动一个自定义函数 (installableOnEdit)。如果已完成修改的行包含数据,我会调用自定义函数 (GetProductInfo) 来进行 API 调用,该调用将在不同的单元格中写入值。

如果不是,我只是清除其他一些行。

我的问题是,如果我在 A 列中手动插入数据,那么它就像一个魅力,但如果我使用一个函数在 A 列中写入 .setValue (来自其他自定义函数),触发器不开火。

这是我的代码:

function installableOnEdit(e) {
  var ss = SpreadsheetApp.getActive();
  var editedRange = e.source.getActiveRange();
  var editedRow = editedRange.getRow();
  var editedCol = editedRange.getColumn();
  var url = editedRange.getValue();

  var urlColumn = 1;

  if (editedCol == urlColumn){
    if (url != ""){
      GetProductInfo(url, "material", editedRow, editedCol);
    }else {
      //Reset material
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data").getRange(editedRow, editedCol+3).setValue("");
    }
  } 
}

有任何想法吗 ?

标签: javascriptgoogle-apps-scriptgoogle-sheetstriggers

解决方案


多亏了 tehhowch,我才能找到解决方案。

这并不适合所有人,但要使用触发器,我只需调用从 API (GetProductInfo) 检索信息的自定义函数,方法是在生成 .setValue() 的函数末尾调用它。


推荐阅读