获取所有 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 的回复外,您只能删除自己在文档上创建的触发器,无法删除其他用户创建的触发器。任何具有编辑权限的用户都可以在文档上创建触发器,但该触发器只能由该用户操作。
有没有办法从 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 的回复外,您只能删除自己在文档上创建的触发器,无法删除其他用户创建的触发器。任何具有编辑权限的用户都可以在文档上创建触发器,但该触发器只能由该用户操作。