【问题标题】:How to create a trigger programmatically for an open event in Google Apps Script如何以编程方式为 Google Apps 脚本中的打开事件创建触发器
【发布时间】:2020-03-13 17:08:49
【问题描述】:

我正在使用 Google Apps 脚本并在尝试以编程方式创建触发器(未绑定到特定文件或任何内容)时遇到一个奇怪的错误。

我正在尝试运行某个代码 - 基本上是在 Google Docs 打开时编辑文档,但我遇到了这个错误:

获取对象上创建的方法或属性时出现意外错误 ScriptApp.DocumentTriggerBuilder。 (第 9 行,文件“代码”)DetailsDismiss

这是我正在使用的代码:

 /**
 * Creates a trigger for when a spreadsheet opens.
 */
function createSpreadsheetOpenTrigger() {
  var d = DocumentApp.getActiveDocument();
  ScriptApp.newTrigger('myFunction')
        .forDocument(d)
        .onOpen()
        .create();
}


function myFunction() {
     // change the body or something...
}

【问题讨论】:

    标签: javascript google-apps-script triggers


    【解决方案1】:

    如果脚本未绑定到文档,getActiveDocument 将不起作用。你想要 openById。

    【讨论】:

    • 谢谢,我不知道,但我正在尝试将此应用于所有文档,因此基本上所有文档 onOpen 事件。基本上:每当打开任何文档时,我都会在其末尾添加一些内容或其他内容......
    • 糟糕!我并不是要将此作为答案发布。对于每个文档,您都不能拥有 onOpen 的东西。您必须将onOpen 触发器显式添加到文档中。
    • 哦,谢谢你的澄清。顺便说一句,如果没有你的回答,我不会得到这个,所以一切都很好!
    【解决方案2】:

    您为什么要在打开时创建触发器? onOpen 本身就是一个触发器。

    试试这个

    function onOpen(e)
    {
        myFunction();
    }
    

    【讨论】:

    • 是的,确实如此,但我相信只有在绑定到容器或文件的情况下才会这样做。例如,您可以在应用程序脚本中使用它,并且它只会在您绑定到的文件上触发/执行。但我正在尝试在所有文档/电子表格/容器中执行此操作...
    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多