2017-07-30 138 views
1

我目前正在使用我的項目中的Google Apps腳本。但面對觸發問題。 場景:Google Apps腳本觸發器問題

兩個用戶 - 用戶A - 用戶B

登錄作爲用戶A,創建一個谷歌電子表格和文字給它。還創建了一些觸發器。對於例如

Trigger Snapshot

電子表格是共享與編輯權限的用戶B。現在我以UserB身份登錄。

案例1:嘗試將新的觸發腳本添加 結果=>觸發器被創建,但只顯示給用戶B

案例2:修改現有的觸發器(由用戶A創建) 結果=>無法看到由UserA創建的觸發器。即使修改操作沒有任何錯誤發生。沒有更改應用於該觸發器。

案例3:刪除現有觸發器(由UserA創建) 結果=>看不到由UserA創建的觸發器。即使刪除運行沒有發生任何錯誤。沒有更改應用於該觸發器。我仍然可以使用UseA登錄來查看它。

我Qusetion:

1.Is有什麼辦法 - 修改由用戶B這是由用戶A創建觸發器? - UserB添加新的觸發器,UserA可見?

  1. Google應用程序腳本有任何功能可以更改上下文/會話嗎?例如,儘管UserB已登錄;將會話更改爲UserA並執行整個操作(添加/修改/刪除),然後再次更改回UseB會話?

下面是我的方法:

function createTimeDrivenTriggers() { 
    ScriptApp.newTrigger("assignEditUrls") 
    .timeBased() 
    .atHour(0) 
    .nearMinute(59) 
    .everyDays(1) 
    .create(); 

    ScriptApp.newTrigger('processInputXML') 
    .timeBased() 
    .everyMinutes(5) 
    .create(); 

    ScriptApp.newTrigger('assignFormResponseIDs') 
    .timeBased() 
    .everyMinutes(30) 
    .create(); 

    ScriptApp.newTrigger('setSRHistoryColumn') 
    .timeBased() 
    .everyMinutes(1) 
    .create(); 

} 


    function createSpreadSheetTriggers() { 
     var sheet = SpreadsheetApp.getActiveSpreadsheet(); 

     ScriptApp.newTrigger("onOpen") 
     .forSpreadsheet(sheet) 
     .onOpen() 
     .create(); 

     ScriptApp.newTrigger("sendEmailNotificationsOnFormSubmit") 
     .forSpreadsheet(sheet) 
     .onFormSubmit() 
     .create(); 

     ScriptApp.newTrigger("notifyProductAssigneeOnFormSubmit") 
     .forSpreadsheet(sheet) 
     .onFormSubmit() 
     .create(); 
    } 


    function deleteTrigger() { 
     // Loop over all triggers. 
     var allTriggers = ScriptApp.getProjectTriggers(); 
     for (var i = 0; i < allTriggers.length; i++) { 
      ScriptApp.deleteTrigger(allTriggers[i]); 
     } 
    } 

任何幫助將不勝感激。提前致謝。

回答

1

您無法訪問由編輯過電子表格或Google應用腳本訪問權限的其他人創建的手動觸發器。

From Google App script documentation

當你在一個項目上進行合作,你 創建不與那些誰擁有你的項目訪問共享任何可安裝的觸發器。如果 需要爲所有協作者設置一致的觸發器設置,則您可以使用腳本服務以編程方式創建觸發器,運行時間爲 。

正如在文檔中提到的,您可以以編程方式安排觸發器。

+0

感謝您的寶貴迴應。我通過UserA以編程方式添加了觸發器,但仍無法訪問和修改UserB的觸發器。 – Seuli