2014-10-11 52 views
1

我有一個電子表格來跟蹤數據,每個有鏈接的用戶都可以編輯。雖然我明白,這是一個安全風險,我不介意,因爲電子表格只是我知道的公會和我感興趣的。谷歌電子表格GAS觸發器沒有爲匿名編輯發射

更多某些區域受到保護,只有文檔的管理員才能訪問到它。

我想要做的,就是有一個GAS迴應「onEdit」爲所有用戶(匿名)。

的最簡單的例子是這樣的:

Code.gs

function onEdit(e) { Browser.msgBox('Editing...'); } 

我重視這個表 - >在編輯觸發器,它顯示了我 - 因爲我的還是我登錄因爲我是這個文件的管理員。但是:其他(匿名)用戶出於某種原因不會收到消息框。我已經通讀了權限表,並指出,如果您想使用任何類型的腳本(除了那些以名稱執行的時間驅動的腳本,添加它們的腳本以外),您顯然需要登錄)。

有沒有解決方法?我的觸發器只是將一個表中的值複製到另一個表中,對它們進行排序和格式化。

非常感謝您提前!

回答

5

實際上有2個onEdit觸發器,即「簡單」觸發器和「可安裝」觸發器。

簡單onEdi噸運行的用戶訪問電子表格,而不要求任何的授權,這意味着它是無法執行任何需要授權和使用SpreadsheetApp方法需要授權(如你注意到當你跑這是第一次編寫腳本)。

運行爲腳本的作者,更準確的安裝觸發器(onEdit,的onChange,等...),它們作爲誰安裝觸發用戶。

他們(觸發功能)具有相同的「維權」作爲用戶自己,可以做的一切,用戶可以做的。

匿名(不登錄)使用電子表格將觸發此腳本,但他們不會是負責什麼的腳本做,一切都將在觸發「安裝程序」的名義進行的用戶。

隨意嘗試this spreadsheet,我寫這個劇本:

function onEdit(e) { 
    SpreadsheetApp.getActiveRange().setValue('simple onEdit Trigger running as sheet user without authorization'); 
} 

function onEditInstallable(e) { 
    SpreadsheetApp.getActiveRange().setValue('Installable onEdit Trigger running as script author'); 
} 

請也使得它的一個副本,你嘗試和測試,無需安裝任何特殊觸發複製後。

然後比較結果:在我的表,你會得到從第二功能的消息,並在你的將是從第一個消息。

當安裝觸發器處於活動狀態,編輯工作表,這兩種功能將被觸發,還有就是你實際看到兩種文本先後,因爲它們一般不採取完全相同的時間運行的機會。

匿名用戶總會看到第二個,如果你安裝在您的工作表的觸發器調用onEditInstallable功能onEdit(從腳本編輯器轉到Ressources /當前項目觸發/創建新的觸發器,並選擇一個你需要的)

關於該主題的文檔:simple triggersinstallable ones

+0

謝謝。我其實閱讀了可安裝的觸發器,但由於某種原因,我不知道有一個「onEditInstallable」函數可以使用。我想e.Auth可能會產生足夠的用戶信息來區分授權用戶和匿名用戶?感謝您付出努力並創建了該示例電子表格。 – Igor 2014-10-13 08:26:46

+0

演示電子表格需要訪問權限。我認爲它應該與任何有鏈接的人分享。原來它是 – 2016-05-01 02:07:50

+0

,但人們一直在發送垃圾郵件,並在代碼中更改所有內容,因此我必須關閉訪問權限。現在我已經將其設置爲只讀,以便任何人都可以輕鬆製作副本。 – 2016-05-01 02:36:48

相關問題