2017-07-30 134 views
1

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

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

登录作为用户A,创建一个谷歌电子表格和文字给它。还创建了一些触发器。对于例如

Trigger Snapshot

电子表格是共享与编辑权限的用户B。现在我以UserB身份登录。

案例1:尝试将新的触发脚本添加 结果=>触发器被创建,但只显示给用户B

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

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

我Qusetion:

1.Is有什么办法 - 修改由用户B这是由用户A创建触发器? - 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]); 
     } 
    } 

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

回答

1

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

From Google App script documentation

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

正如在文档中提到的,您可以以编程方式安排触发器。

+0

感谢您的宝贵回应。我通过UserA以编程方式添加了触发器,但仍无法访问和修改UserB的触发器。 – Seuli