代码之家  ›  专栏  ›  技术社区  ›  Smeagol

当使用容器绑定脚本复制Google文档时,如何获取其可安装的触发器?

  •  0
  • Smeagol  · 技术社区  · 6 年前

    问题

    我的文档附带了一个绑定到容器的脚本。 它有 onOpen 可安装的触发器,我需要在新创建的文档中获取脚本。 我发现最有效的方法是通过从原始文档复制来创建新文档。

    The problem is, that the triggers are not copied with it.

    条件:

    1. 简单的触发器是不够的,我需要使用需要授权的操作
    2. 我不想强迫我的用户为每个文档手动创建触发器
    3. 我不介意可安装的触发器是在从编程创建的菜单中单击按钮后创建的。

    我的想法是:

    我想以编程方式创建它,“测试环境有问题”。我得到一个错误:

    加载项尝试了测试中不允许作为加载项的操作 模式。若要使用此操作,必须部署该加载项。

    据我所知,我需要将项目发布到商店才能使用它,这是我不想做的。

    我不介意作为附加组件发布,但是Google脚本IDE只提供作为Web文档Web附加组件发布。

    代码:

    function onOpen(e){
        DocumentApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
            .createMenu('Custom menu')
            .addItem('Open sidebar automatically', 'createTrigger')
            .addToUi();
    }
    
    
    function createTrigger() {
        var doc = DocumentApp.getActiveDocument();
        ScriptApp.newTrigger('onOpenReal')
            .forDocument(doc)
            .onOpen()
            .create();
    }
    
    function onOpenReal(e){
        ...something requiring authorization...
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Smeagol    6 年前

    我部分地想到了答案:

    我想是 不可能 复制文档及其触发器,但我没有找到任何相关的正式文档。

    但是 错误:

    加载项尝试了测试中不允许作为加载项的操作 模式。若要使用此操作,必须部署该加载项。

    在看似正常的环境中,这是由保存在谷歌应用程序脚本编辑器中的测试配置引起的。

    要消除错误,您需要首先删除“测试为附加组件”选项中的所有测试配置。在此之前,系统将所有启动视为“测试”,即使是作为常规用户打开的。