Google Apps 脚本仅在手动触发时有效,其他任何触发器均无效

Google Apps Script only works when manually triggered, not by any other trigger

我有点难以理解这件事: 如果 X 行 Y 列中的单元格颜色为红色 (f4c7c3),我的代码旨在删除 rox X。 例如:

由于我在这里看到的一些问题帮助我改进了代码,因此该代码运行良好,但只有在我单击 运行 时它才会运行。如果我正在使用任何触发器(我想每天在午夜和凌晨 1 点之间使用时间驱动的触发器,但我已经尝试了所有触发器),它会显示它已完成,但电子表格没有任何反应。

这是我的代码,非常感谢你对这个问题的帮助:

function DeleteRow(column,color) {   //Delete row if the color in the Date column is F4C7C3
  var column = (typeof(column)!='undefined')?column:4;  
  var color = (typeof(color)!='undefined')?color:'#f4c7c3'; 
  var ss = SpreadsheetApp.openById("1Ichlawob5EHzSK4ljRSJfViugFWugTzHOMId3q5LL6w");
  var sht = ss.setActiveSheet(ss.getSheets()[0]); 
  var rng = ss.getDataRange();
  var rngA = rng.getBackgrounds()
  for(var i=rngA.length-1;i>-1;i--)
  {
    if(rngA[i][column-1]==color)
    {
      sht.deleteRow(i+1);
    }
  }
}

顺便说一句,即使执行指示成功,我还是得到了一个显示错误的摘要-

尝试替换行:

var column = (typeof(column)!='undefined')?column:4;  

收件人:

var column = (typeof(column)=='number')?column:4;  

或者只是:

var column = 4;  

说明

每当您通过触发器触发一个函数时,该函数都会得到一个 'event object' 作为第一个也是唯一一个参数。您实际上是在调用 DeleteRow(e) 而不是 DeleteRow()。其中 e 是事件对象。它不是 undefined 也不是数字。