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

Get all Google Script Triggers and remove them

有没有办法从 Google 脚本中的所有文档中获取(和 change/remove)所有触发器,就像我打开 Script Editor -> Edit -> All your triggers 一样?

更新:

我添加了一些测试触发器并尝试循环所有电子表格文件,正如 所说:

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()总是return一个空数组。我看了this issue,最后的答案是"We decided not to take action on this issue. Triggers always belong to a particular script and are not accessible to other scripts. The documentation has been clarified to make this clear."

原来做不到?

您可以使用 getUserTriggers(document), getUserTriggers(forms) and getUserTriggers(spreadsheet) 方法从 docs/forms/spreadsheets 获取触发器,但它 return 只会触发指定文件。 因此,如果您想修改所有 Drive 文件中的触发器,则需要循环所有文件

此外,您不能通过代码修改触发器,但可以删除触发器(deleteTrigger(Trigger) method) and create a new one (see TriggerBuilder class)。

编辑: 正如 FLighter 指出的那样,您无法从您所在的另一个脚本中获取触发器 运行。我应该更仔细地阅读文档:

Gets all installable triggers owned by this user in the given document, for this script or add-on only. This method cannot be used to see the triggers attached to other scripts.

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

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