【问题标题】:Why doesn't the trigger work for the script running a function on my google spreadsheet?为什么触发器不适用于在我的谷歌电子表格上运行函数的脚本?
【发布时间】:2013-07-19 21:00:12
【问题描述】:

因此,我在我的 googledoc 电子表格中使用了一个脚本,该脚本遍历一列并计算特定格式的出现次数。 (即在我的电子表格“=myFunction()”中)

该功能工作正常,但我的问题是尽管设置了触发器来运行脚本“onEdit”,但它从来没有这样做过。每次我希望它在我的电子表格上更新时,我都必须打开脚本并保存它。

我已经查了好几个小时了,但似乎没有人有我的问题。通知没有发送错误。我的函数的代码(虽然我认为它不是非常相关)是:

function CountIfNotStrikeThrough2()
{

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var mysheet = ss.getActiveSheet();


  var mydatarange = mysheet.getRange(1,1,390,1);
  var numRows = mydatarange.getLastRow();
  var rowindex = mydatarange.getRowIndex();
  var columnindex = mydatarange.getColumnIndex();

  var total =0;

  for(i=rowindex;i<=numRows;i++)
  {
    if(mydatarange.offset(i-1, columnindex-1, 1, 1).isBlank() != true && mydatarange.offset(i-1, columnindex-1, 1, 1).getFontLine() != "line-through")
    {

      total++;
    }    
  }

  return total;
}

【问题讨论】:

    标签: google-apps-script google-sheets triggers


    【解决方案1】:

    我知道这里有一个线程列出了 onEdit 触发器何时未激活的完整列表。 (here) 例如,如果您设置数据验证并从验证中的值列表中选择一个项目,它不会触发 onEdit 函数。

    除此之外,您能否尝试一个简单的触发器而不是可安装的?也就是说,不要将 CountIfNotStrikeThrough2() 显式关联到 onEdit 触发器,而是尝试将函数重命名为“onEdit()”,看看是否有效。这会创建一个隐式或简单的触发器。过去我在可安装触发器和简单触发器方面遇到过麻烦。

    另外,请分享您为测试触发器而执行的确切操作。

    参考:https://developers.google.com/apps-script/understanding_triggers

    【讨论】:

    • 我把函数的名字改成了onEdit(),还是什么都没有。为了测试,我在电子表格中进行了更改(例如,将某些内容或文本划掉到空单元格)并检查函数调用所在的单元格以查看数字是否更改。该函数对一列进行计数以查看文本是否被划掉,并且只有当我打开脚本并明确保存它时它才能正常工作。否则,无论我在列中划掉多少个单词,它都不会更新。
    • 接下来我会尝试隔离触发器是否正在触发,或者我的一段代码是否正在触发它。使用以下命令将消息写入日志: Logger.log("Foo");看看它是否在发射。如果是这样,请找出它在您的代码中停止执行的位置。
    • 是的,随着日志不断更新,编辑似乎导致触发器工作。所以它一定是我的代码......它可能是哪一行?
    • 可能有更好的方法来做到这一点,但您可以通过代码移动该日志记录语句以找出它停止显示的位置。或者,您可以有很多,例如 Logger.log("Got here! - 1")、Logger.log("Got here! - 2") 等。这有助于您隔离阻塞的线路。如果您不使用触发器来执行,我建议您改用调试器,因为它很有帮助;我不认为你可以用它来做这个。我要注意的另一件事是该函数是在事件对象中传递的。通过 e.source 而不是您的第一行访问。在此处阅读更多信息:goo.gl/6QytB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多