2014-06-23 55 views
0

我的Google表單上的onOpen事件僅在打開表單的版本時激活,但當我打開它以回答(/ viewform)時才激活。實際上,我只是希望它在有人打開表單進行回答時運​​行,因爲我的腳本使用表中的當前信息更新了組合框。我不確定這是否是最好的方式,但我願意接受建議。onOpen觸發器未在Google表單上激活

我嘗試在資源>添加觸發器菜單上創建函數onOpen()並創建doIt()函數並手動向onOpen添加觸發器。觸發器已正確列出,並且似乎正在打開版本更新的正確形式。可能我得到了錯誤的觸發器處理程序,但是沒有其他的用於我想要的(只是onEdit,它應該做onOpen正在做的事情,以及onInstall)。

這篇文檔非常簡潔,絕對關注Spreadsheets腳本。他們提到自定義掛鉤,但是,稱爲可安裝觸發器,其中一個實際上是:

當電子表格或表單編輯器打開時。 (請注意,當用戶打開表單進行響應時,該觸發器不會激活,而是在編輯器打開表單進行修改時觸發。)與簡單的onOpen觸發器不同,可安裝的觸發器可以充當安裝觸發器的用戶。

這表明onOpen應該做我想要的東西...所以現在我很困惑。

另外,我不確定權限是如何工作的。就目前而言,據我所知,似乎任何與我分享表單的人都可以編輯它,只要該人擁有網址,每個人都可以回答。有沒有將白名單列入白名單的方法?我不太喜歡URL是阻止外部人看到我加載到組合框中的數據的唯一屏障,並且最重要的是,通過提交表單來更新這些數據......看起來,暴力破解可能很容易解開很多'祕密'就是這樣形成的......或者從安全的角度來看,我可能會生氣嗎?

回答

3

您需要安裝的觸發器不是onOpen而是onFormSubmit。只有當有人打開表單 是顯示了在腳本編輯器/ ressources /當前腳本觸發

見下圖 enter image description here

正如您已經閱讀(但aparently不明白),該onOpen引發火災編輯器,而不是當有人填寫(提交)表格。

關於第二點,沒有辦法將允許填寫表格的用戶列入白名單,您只能根據用過的名稱選擇答案並最終拒絕不允許的答案。

如果此訪問控制對您至關重要,那麼您可以使用UiApp或HTML服務實現一些非常高效的操作,但這會稍微複雜一些。

關於您對權限的最後一點,事情非常簡單:可安裝觸發器以創建觸發器的用戶身份運行。如果你這樣做了,那麼腳本會像使用你的權限和訪問權限手動運行一樣運行。

+0

這樣做不會奏效,因爲我想在用戶打開表單進行回答時將組合框填滿,所以他可以選擇一個,而不是當他提交時(這太晚了)..儘管如此,我仍然嘗試過,但它並沒有奏效。再次,我不確定這個觸發器是否存在,但我願意用其他方式來製作動態組合框(選擇/選項或多項選擇題,即)... –

+0

您描述的工作流似乎無法實現..你的意思是你的腳本創建了這個組合框?如果是的話,表格是不正確的做法...用UiApp或htmlService構建它 –

+0

是的,它基本上用來自電子表格的數據填充組合框。基本上我想做的是一個動態組合框,它從電子表格加載它的項目。就像一個人的名單或類似的東西。它始終是一個最新的列表。 –

0

我認爲這個技巧是設置腳本來觸發編輯填充表單數據的電子表格。您可能需要檢查onEdit(e)事件以查看您是否確實需要執行操作,例如檢查事件對象是否編輯了內容。這樣,只要你更新源數據,我們爲你更新的形式(vs當表單打開時)。

相關問題