当单元由外部源(firebase)更改时,如何在Google表格中触发Google Apps脚本?

我正在尝试触发已绑定到Google表格的Google App脚本。

firebase中的数据被拉入工作表,该工作表将触发脚本。我目前正在使用onEdit(e),当我手动向其中添加数据时可以使用,但从Firebase更新数据时不起作用。有什么方法可以设置触发器,以便每次更改特定范围内的单元格值时都运行该函数。

谢谢!

脚本

function onEdit(e) {
  var ss = Spreadsheetapp.getactive()
  var dumpingGround = ss.getSheetByName("Dumping Ground")
  var dataDump = ss.getSheetByName("Data Dump")
  var ddLastRow = dataDump.getLastRow() + 1
  var editCol = e.range.getcolumn();
  var editRow = e.range.getRow();

  Logger.log("edit")
  /*Copy from dumping ground to data dump*/
  if ((editRow == 1 && editCol == 2) || (editRow == 1 && editCol == 3)){

    /*Set required range for data dump and dumping ground*/
    var ddRange = '\'Data Dump\'!A' +ddLastRow+ ':BF' + ddLastRow
    var dgCopyRange = '\'Dumping Ground\'!B1:BF1'

    /*Copy action*/
    ss.getRange('\'Dumping Ground\'!B1:BF1').copyTo(ss.getRange(ddRange),Spreadsheetapp.CopypasteType.PASTE_NORMAL,false);

    /*Check data dump row count and delete 1000 rows if necessary*/
    if(ddLastRow = 9999){
      dataDump.deleteRows(1,1000);
    }
  }
};
q58603432 回答:当单元由外部源(firebase)更改时,如何在Google表格中触发Google Apps脚本?

从Apps脚本documentation

  

脚本执行和API请求不会导致触发器运行。例如,调用Range.setValue()编辑单元格不会导致电子表格的onEdit触发器运行。

我认为您最好的做法是创建一个time trigger并检查指定范围内的更改。自然,我不能真正确定那是否可以满足您的目的,但这值得一试。

以下是一些可供考虑的替代方法:

  • 如果数据提取是由脚本启动的,则只需让该函数完成所需的操作即可。
  • 如果您有单独的服务来填充数据,则可以使用Sheets API。
  • 您可以将脚本发布为web app并通过GET或POST触发
  • 您可以尝试使用Apps Script API执行函数。请检查这样做的要求,因为它可能无法满足您的要求。
本文链接:https://www.f2er.com/3123955.html

大家都在问