1

根據Google的documentation關於特定於容器的可安裝觸發器,觸發器將「作爲安裝觸發器的用戶運行,而不是用戶觸發事件。Google應用腳本可以在受保護的電子表格中使用錯誤的權限

這似乎意味着觸發器可能會更新Google文檔中受保護的工作表,因爲雖然用戶可能無法編輯受保護的工作表,但如果觸發器是由具有寫入權限的用戶安裝的,則觸發器可能會被觸發。

要以最簡單的方式測試此想法,我嘗試使用onOpen事件觸發一個腳本,該腳本編輯受保護工作表上單元格的值。這是由可以編輯工作表的用戶安裝的。雖然它在用戶打開工作表具有寫權限的情況下起作用,但如果用戶不工作,則無法更新工作表。

這是由於我誤解它應該如何工作,或者它是一個錯誤? Google似乎很清楚腳本是以上傳腳本的用戶權限運行的。

+0

我剛剛遇到同樣的問題,並嚮應用腳本問題跟蹤器添加了報告:http://code.google.com/p/google-apps-script-issues/issues/detail?id=1562 – Josh

+0

我的解決方法是讓觸發器寫入一個完全不同的電子表格,該電子表格僅作爲視圖共享。 – Josh

+1

更好的解決方法是使用SpreadsheetApp.openById(SpreadsheetApp.getActiveSheet()。getId())重新打開相同的活動電子表格,並且可以毫無問題地修改受保護的表單。 – Josh

回答

1

這是一個錯誤。

在3月份我[貼] [1]關於它的舊GAS論壇。 Google的Anton Soradoi通過電子郵件私下回復我,因爲我無法公開分享電子表格。我與他分享,並得到通過電子郵件於星期二4月3日這個答覆:

「你碰到的問題似乎是一個錯誤 我們目前正在調查這 我會盡快給你更多的信息。一旦我有了它。「

我沒有提出一個問題,因爲他們已經在案件,但我從此沒有聽說過。

0

這很有趣。 如果你這樣做了onEdit,你將不得不手動添加一個觸發器來運行「On Edit」,並調用onEdit函數,只要有人編輯了某個東西,它就會在你的名字下運行,但我認爲onOpen只會在你是用戶打開電子表格,您可以嘗試。

+0

嗯,感謝您的輸入user1376128,但我嘗試爲onEdit事件(腳本編輯器 - >資源 - >當前腳本的觸發器 - >添加觸發器)設置它,並且它仍然不適用於沒有寫入受保護的表單。這是不幸的,因爲它更接近我試圖爲其設計解決方案的實際用例。 –

+0

看起來像是一個錯誤,我之前遇到過許可混淆問題,他們在一週內解決了這個問題,所以你應該提出一個我認爲的問題 – user1376128

相關問題