Google Apps脚本触发器问题

时间:2017-07-30 15:58:47

标签: google-apps-script

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

两个用户 - UserA - UserB

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

Trigger Snapshot

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

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

可见

案例2:修改现有触发器(由UserA创建) 结果=>无法看到UserA创建的触发器。即使修改opreration没有任何错误发生。没有对该触发器进行任何更改。

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

我的问题:

1.有没有办法     - 由UserA创建的UserB修改触发器?     - UserB添加一个新触发器,对UserA可见吗?

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

    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]);
          }
        }
    

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

1 个答案:

答案 0 :(得分:1)

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

From Google App script documentation

  

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

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