2017-07-24 36 views
0

有没有办法从Google Script中的所有文档中获取(并更改/删除)所有触发器,就好像我打开了Script Editor -> Edit -> All your triggers获取所有Google脚本触发器并将其删除

更新:

我增加了一些测试触发器和因为它是由Pierre-Marie Richard说试图循环中的所有电子表格文件:

function getAllSpreadsheetTriggers() 
{ 
    var files = DriveApp.getFilesByType('application/vnd.google-apps.spreadsheet'), 
     spreadsheets = [], 
     triggers  = []; 

    while(files.hasNext()) 
     spreadsheets.push(SpreadsheetApp.openById(files.next().getId())); 

    for (var i = 0; i < spreadsheets.length; i++) 
    { 
     triggers = ScriptApp.getUserTriggers(spreadsheets[i]); 
     Logger.log(triggers); 
    } 
} 

.getUserTriggers()总是返回一个空数组。我读this issue,最后一个答案是“我们决定不对这个问题采取行动,触发器总是属于一个特定的脚本,并且其他脚本无法访问,文档已澄清,以便清楚说明。

事实证明,不能这样做?

回答

2

您可以使用getUserTriggers(document),getUserTriggers(forms)getUserTriggers(spreadsheet)方法从文档/表单/电子表格中获取触发器,但它只会返回指定文件的触发器。 因此,如果要修改所有驱动器的文件中的触发器,则需要在所有文件上循环。

此外,您不能通过代码修改触发器,但可以删除触发器(deleteTrigger(Trigger) method)并创建一个新触发器(请参阅TriggerBuilder class)。

编辑: 作为FLighter一点上,你不能从一个你正在运行,另一个脚本触发器。我应该阅读的文档以更多的关注:

获取给定 文档中该用户所拥有的所有安装的触发器,这个脚本或仅附加。 此方法不能用于 以查看附加到其他脚本的触发器。

因此,为了解答原来的问题,不可以。您可以为每个脚本创建一些代码,但需要手动触发。

+0

请问您能评论我更新的问题吗?谢谢 – FLighter

0

只要您知道,除了Pierre-Marie Richard的回复外,您只能删除在文档上创建的触发器,您将无法删除其他用户创建的触发器。任何具有编辑权限的用户都可以在文档上创建触发器,但该触发器只能由该用户操作。

相关问题