2013-12-10 172 views
1

我有this form動態選擇選項的形式

Screen Shot

如果你看到列表項目 - 學生姓名和分數使從谷歌表填充。

我想現在要做的是在列表項級的選擇,只顯示那些屬於在「選擇學生」評選的特定年級學生......

如何能不能做到,因爲形式只有兩個觸發器:onOpen和onEdit?

+0

你如何從Excel電子表格中的數據?您是否使用Google電子表格? – Mogsdad

+0

是的數據來自谷歌電子表格通過谷歌應用程序腳本功能,我們寫道.. – user3082586

回答

1

編輯:多虧跟進評論的附加信息,這個問題已經得到澄清,並歸結爲:「作爲一個用戶進行選擇在谷歌的形式,它可以自定義選項這種形式的其他問題?「

答:不可以。請參閱Dynamically edit multiple choice options in live Google Form using Apps Script

原始回答 - 這解釋了在編輯這些選項的來源(電子表格)時,如何更改表單中顯示的選項。

如果您的數據位於Google Spreadhsheet中,源電子表格中的觸發器將能夠響應名稱和成績列表中的更改。

onChange觸發器是「可安裝的」,並且能夠執行簡單的操作,例如修改表單,因此在這種情況下它將是更好的選擇。

在觸發器功能中,使用FormsApp.openById()FormsApp.openByUrl(),然後使用item.setChoices()更新以前的項目選項,從電子表格中讀取值,就像創建表單時一樣。

對於獎勵標誌......而不是盲目覆蓋選項,您可以閱讀現有的選項並僅在更改時更新它們。

警告 - 在頻繁更改或長列表的工作表上,此觸發器的計算成本很高。您可能會發現您遇到了Google的處理限制。

+0

但是,如果你看到我的要求,我沒有改變電子表格中的任何東西,我只想根據成績篩選學生姓名..所以你認爲上述解決方案可以幫助嗎? – user3082586

+0

啊哈,謝謝你的澄清。在你的問題中使用'onChange',以及從電子表格填充選項的引用,導致我走錯了路。不,你不能改變選項列表的內容,一旦它們在瀏覽器中呈現 - 請參閱[這個答案](http://stackoverflow.com/questions/18645999/dynamically-edit-multiple-choice-options-in-現場谷歌 - 成型 - 使用 - 應用程序 - 腳本/ 18649165#18649165) – Mogsdad

1

據我所知,這種類型的客戶端事件在Google窗體中不存在。 Google Apps腳本的腳本機制專爲創建表單和其他文檔而設計,但不會達到客戶端功能的極限。

我建議您將表單分成多個頁面,並使用「轉到基於答案的頁面」功能來實現您所需的功能。

使用form.addPageBreakItem()創建頁面並使用item.createChoice(value, PageBreakItem)導航到正確的頁面。

參考文獻:

Google Apps Script Forms Service

addPageBreakItem

createChoice