2017-07-24 55 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的回覆外,您只能刪除在文檔上創建的觸發器,您將無法刪除其他用戶創建的觸發器。任何具有編輯權限的用戶都可以在文檔上創建觸發器,但該觸發器只能由該用戶操作。

相關問題