获取所有Google脚本触发器并将其删除

时间:2017-07-24 12:01:44

标签: google-apps-script

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

更新

我添加了一些测试触发器并尝试循环所有电子表格文件,如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 个答案:

答案 0 :(得分:3)

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

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

修改FLighter指向它时,您无法从另一个脚本中获取您正在运行的触发器。我应该更多地阅读文档:

  

获取此用户在给定中拥有的所有可安装触发器   文档,仅适用于此脚本或加载项。 此方法无法使用   查看附加到其他脚本的触发器。

所以,原来的问题是,不,你不能。您可以为每个脚本编写一些代码,但需要手动触发。

答案 1 :(得分:0)

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