【问题标题】:Google Apps Script Trigger IssueGoogle Apps 脚本触发器问题
【发布时间】:2017-07-30 15:58:46
【问题描述】:

我目前正在我的项目中使用 Google Apps 脚本。但面临触发器问题。 场景:

两个用户 - 用户A - 用户B

以 UserA 身份登录,创建了一个谷歌电子表格和脚本。还创建了一些触发器。例如

Trigger Snapshot

电子表格共享给具有编辑权限的 UserB。现在我以 UserB 身份登录。

案例 1:尝试向脚本添加新触发器 结果 => 触发器已创建,但仅对 UserB 可见

案例 2:修改现有触发器(由 UserA 创建) 结果 => 看不到由 UserA 创建的触发器。即使修改操作没有任何错误发生。该触发器没有应用任何更改。

案例 3:删除现有触发器(由 UserA 创建) 结果 => 看不到由 UserA 创建的触发器。即使删除操作没有任何错误发生。没有更改应用于该触发器。我仍然可以通过 UseA 登录看到它。

我的问题:

1.有什么办法 - 修改由 UserA 创建的 UserB 触发器? - 添加 UserB 的新触发器,并且对 UserA 可见?

  1. Google 应用程序脚本是否具有更改上下文/会话的功能?例如,虽然 UserB 已登录;将会话更改为 UserA 并执行整个操作(添加/修改/删除),然后再次更改回 UseB 会话?

以下是我的方法:

function createTimeDrivenTriggers() {
  ScriptApp.newTrigger("assignEditUrls")
     .timeBased()
     .atHour(0)
     .nearMinute(59)
     .everyDays(1)
     .create();

  ScriptApp.newTrigger('processInputXML')
     .timeBased()
     .everyMinutes(5)
     .create();

  ScriptApp.newTrigger('assignFormResponseIDs')
     .timeBased()
     .everyMinutes(30)
     .create();

  ScriptApp.newTrigger('setSRHistoryColumn')
     .timeBased()
     .everyMinutes(1)
     .create();

}


    function createSpreadSheetTriggers() {
       var sheet = SpreadsheetApp.getActiveSpreadsheet();

        ScriptApp.newTrigger("onOpen")
       .forSpreadsheet(sheet)
       .onOpen()
       .create();

       ScriptApp.newTrigger("sendEmailNotificationsOnFormSubmit")
       .forSpreadsheet(sheet)
       .onFormSubmit()
       .create();

       ScriptApp.newTrigger("notifyProductAssigneeOnFormSubmit")
       .forSpreadsheet(sheet)
       .onFormSubmit()
       .create();
    }


    function deleteTrigger() {
      // Loop over all triggers.
      var allTriggers = ScriptApp.getProjectTriggers();  
      for (var i = 0; i < allTriggers.length; i++) {
          ScriptApp.deleteTrigger(allTriggers[i]);
      }
    }

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您无法访问由对电子表格或 Google 应用脚本具有编辑权限的其他人创建的手动触发器。

    From Google App script documentation

    当您在一个项目上进行协作时,任何可安装的触发器都会触发您 create 不会与有权访问您的项目的人共享。如果 您需要为所有协作者设置一致的触发设置,您 可以在运行时使用脚本服务以编程方式创建触发器 时间。

    如文档中所述,您可以以编程方式安排触发器。

    【讨论】:

    • 感谢您的宝贵回复。我通过 UserA 以编程方式添加了触发器,但仍然无法访问和修改 UserB 的触发器。
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多