Apakah ada cara untuk menautkan pertanyaan gaya "Pilih dari daftar" dalam formulir ke daftar data (mis. Dalam spreadsheet)?
Ini berarti bahwa ketika opsi baru ditambahkan ke daftar di spreadsheet (atau di mana pun dimungkinkan untuk meng-host daftar), mereka akan secara otomatis muncul sebagai opsi untuk memilih dalam formulir di masa mendatang.
Dalam kasus saya, itu berarti bahwa responden yang mengisi formulir akan dapat memilih sukarelawan mana yang hadir pada sesi sukarelawan tertentu dari daftar sukarelawan yang komprehensif (daripada mengetik setiap nama secara individu), tetapi karena sukarelawan bergabung secara sporadis, maka akan sangat membantu jika memungkinkan untuk menambahkan ini ke opsi pada daftar secara otomatis daripada menambahkan opsi baru secara manual setiap kali.
Saya tidak tahu apakah ini mungkin tapi saya akan sangat menghargai jika ada yang bisa menyarankan cara melakukannya.
Jawaban:
Jawaban Tom Horwood bekerja dengan baik, tetapi hanya setelah memperbaiki kesalahan penting dalam kodenya. Semua referensi ke
LIST_DATA
elemen harus dibuat menggunakan indeksj
(bukani
). Saya tidak memiliki karma yang cukup untuk mengomentari posting Tom jadi inilah monty sepenuhnya:Di bawah ini adalah kode yang diperbaiki. Saya juga mengubah nama
LIST_DATA
elemen sehingga sedikit lebih deskriptif. Ini juga menunjukkan bagaimana Tom berpikir ke depan (pujian!) Dan menyediakan fasilitas untuk memperbarui lebih dari satu elemen bentuk dengan isi lebih dari satu daftar spreadsheet.Untuk meringkas cara agar ini berfungsi (bagi mereka, seperti saya, yang menggunakan Google Apps Script untuk pertama kalinya). Saya telah merujuk nama lembar dan nama bidang formulir dalam cuplikan kode di atas agar mudah dimengerti:
Di spreadsheet yang dikaitkan dengan formulir Anda:
TaskCategories
). Letakkan daftar barang Anda di sana di kolom pertama lembar kerja itu. Hapus semua kolom dan baris tambahan pada lembar itu (ini mungkin atau mungkin tidak perlu - belum diuji)FORMID
perlu diubah ke ID formulir Anda. ID adalah kode panjang (antara garis miring) di bilah URL di browser Anda untuk formulir yang diinginkan.LIST_DATA
variabel akan perlu dimodifikasi sesuai bentuk dan kebutuhan Anda. Anda akan perhatikan bahwa setiap item dalamLIST_DATA
adalah tupel dariformFieldTitle
danworksheetName
. Yang pertama adalah nama bidang formulir (yang harus berupa jenis "pilih dari daftar") - dalam editor formulir itu disebutQuestion Title
. Yang terakhir adalah nama lembar kerja yang Anda buat sebelumnya yang berisi daftar item yang ingin Anda isi bidangnya. Tambahkan sebanyak mungkin tupel ini ke daftar yang Anda butuhkan.Jika Anda kembali ke spreadsheet, Anda akan melihat item menu baru yang berjudul
List Updater
. Ini memiliki satu itemUpdate Lists
yang harus Anda jalankan setiap kali Anda mengubah lembar kerja daftar Anda - itu akan memperbarui formulir yang sesuai.Saya juga mencatat, untuk kepentingan pembaca, bahwa FormRanger tidak berfungsi dengan Google Spreadsheets baru. Pengembang FormRanger mengatakan banyak hal di situs web mereka. Mungkin / mudah-mudahan itu akan berubah di masa depan, tetapi pada saat posting ini kode di atas berfungsi untuk saya dan saya menggunakannya dalam bentuk yang dikerahkan untuk klien.
sumber
Anda dapat melakukan ini dengan bentuk normal dan skrip, menggunakan Form.getItems (), cari item dalam loop, lalu Item.asListItem (). SetChoices (...)
Berikut adalah beberapa kode contoh, yang telah saya gunakan dalam lembar dan formulir contoh ini
sumber
Ada add-on Google Forms yang disebut Form Values yang setidaknya menawarkan cara semi-otomatis: setiap kali Anda mengubah jawaban Anda dalam spreadsheet, Anda perlu mengisi ulang secara manual pilihan dalam jawaban Anda, tetapi setidaknya itu agak mudah dilakukan .
sumber
Anda tidak dapat melakukan ini dengan Formulir Google biasa.
Anda dapat, bagaimanapun, membuat GUI Anda sendiri dengan menggunakan Google Apps Script , dan khususnya layanan UIS . Perlu diketahui, bahwa Anda harus membuat ulang seluruh GUI - Anda tidak dapat menggunakan bagian dari formulir yang ada.
Atau, Anda dapat menggunakan Pembuat GUI . Ini adalah editor WYSIWYG untuk Google Apps Script GUI.
Yang mana pun yang Anda pilih, Anda harus siap untuk melakukan pemrograman untuk mencapai apa yang Anda inginkan.
sumber
Ada skrip untuk itu, yang disebut FormRanger: https://docs.google.com/document/d/1YvgrxeZJNb2CBpSra1j59Mh1bVpk4vBQYLOoyVjby7A/edit?hl=id&forcehl=1
sumber
Ada cara untuk mengotomatiskan pembaruan daftar dengan menetapkan Pemicu [ 1 ] [ 2 ] untuk
Update Lists
.Jalannya adalah Editor Skrip -> Sumber Daya -> pemicu proyek saat ini
Lalu
add a new trigger
,. Untuk contoh yang diberikan, Anda dapat mengaturupdatesList
untuk menjalankanfrom spreadsheet
danOn form submission
. Dengan cara ini, fungsionOpen
tidak diperlukan.sumber
Ya itu bisa dilakukan, menghabiskan sebagian besar hari mencari jawaban dan kemudian mengembangkannya untuk tujuan saya, tetapi itu bisa dilakukan.
Kebutuhan saya adalah memiliki formulir pendaftaran sukarela bagi orang-orang untuk memeriksa beberapa kotak dari daftar area yang mereka ingin relawan. Karena itu satu pertanyaan dengan banyak kotak, masalahnya adalah bahwa spreadsheet Google yang dihasilkan hanya mencantumkan semua yang mereka periksa dalam satu sel. Ada 21 opsi sukarela, sehingga jelas tidak akan menjadi format yang berguna untuk informasi itu. Saya ingin melakukan apa yang saya mengerti Anda mengatakan Anda inginkan, saya ingin memiliki kolom dengan masing-masing dari 21 opsi di kolomnya sendiri. Kemudian di sebelah Timestamp mereka (formulir dihasilkan), nama, email, dan telepon ada 21 kolom dengan "ya" atau dibiarkan kosong. Judul kolom adalah setiap opsi yang dapat mereka pilih. Beberapa orang mungkin bertanya-tanya mengapa tidak hanya memiliki 21 pertanyaan dengan "ya" atau "tidak".
Perhatikan pertama bahwa ketika seseorang mengisi formulir google, spreadsheet yang dihasilkan menyisipkan baris daripada menambahkan data ke baris kosong berikutnya. Ini berarti bahwa setiap rumus yang ada di baris baru saja dihancurkan dan data baru dari rumus tidak memiliki rumus di sebelahnya untuk bekerja dengan data input. Untuk mengatasi ini saya menambahkan lembar ke spreadsheet (buku kerja). Saya menggunakan input dari brettathds di http://productforums.google.com/forum/#!topic/docs/dlW6U6cHuKw. Karena itu saya memasukkan formula berikut ke dalam Sel A1 pada lembar ke-2 ini: = ARRAYFORMULA (Sheet1! A1: A). Saya melakukan hal yang sama untuk setiap kolom melalui kolom E. Kolom E memiliki pertanyaan dengan 21 kotak centang.
Masih di lembar kedua, Baris 1 Kolom TA memiliki tajuk yang identik dengan teks pada setiap opsi kotak centang dari daftar centang bidang yang mereka rela sukarela. Kemudian Kolom Z adalah pertanyaan berikutnya dan terakhir pada formulir, itu adalah pertanyaan teks pendek yang baru saja berjudul "Komentar Tambahan". Untuk kolom itu saya menggunakan = ARRAYFORMULA (Sheet1! F1: F) Saya melakukan ini sebagai pertanyaan terpisah daripada menggunakan opsi "lain" di akhir pertanyaan kotak centang karena tampaknya tidak ada cara yang baik untuk menarik itu data ke dalam spreadsheet.
Sekarang ke bagian yang menjawab bagaimana Anda mendapatkan info dari sel di kolom E (yang bisa memuat hingga 21 item) untuk memisahkan kolom dengan "ya" atau hanya kosong. Rumus dalam F2 pada lembar kedua adalah = iferror (if (search (F $ 1, $ E2)> 0, "Ya",)) Rumus ini mencari untuk melihat apakah teks yang tepat di header kolom (F1) ditemukan di E2, jika sudah maka ia mengembalikan "Ya", jika tidak dibiarkan kosong.
Rumus ini yang dirujuk dalam F2 ditulis (menggunakan "$", melalui tombol F4) sehingga F2 dapat disalin / ditempelkan ke setiap sel di baris 2 dari GY (Google Spreadsheet tidak mendukung penyalinan rumus dengan menyeret / menyalin sebanyak yang Anda bisa di Excel, tapi itu bisa dilakukan dengan memilih F2, lalu CTRL + C, lalu pilih G2: Y2, lalu CTRL + V). Saya kemudian menggunakan salinan metodologi yang sama ditempelkan F2: Y2 ke F3: Y100.
Saya kemudian menyembunyikan Kolom E pada lembar kedua sehingga spreadsheet yang dihasilkan lebih kompak (menghindari semua bungkus dari jawaban yang panjang).
Sekarang saya siap menerima 99 sukarelawan melalui formulir cepat dan mudah yang mereka selesaikan. Memanfaatkan opsi filter di bagian atas kolom juga membantu untuk melihat siapa yang tersedia untuk bidang apa.
Satu frustrasi terakhir yang saya tidak dapatkan diselesaikan. Saya menyelesaikan beberapa formulir palsu untuk menguji rumus dan desain saya, saya kemudian menghapus baris-baris itu dari spreadsheet yang ditautkan. Saya juga memiliki beberapa orang yang menyelesaikan formulir duplikat, saya juga menghapus baris mereka. Patut dicatat di forum produk, saya bukan satu-satunya yang frustrasi mengetahui bahwa entah bagaimana Google masih memiliki data uji / palsu / duplikat yang ditransfer ke "Ringkasan Tanggapan" (ditemukan di bawah tab "Formulir" pada spreadsheet). Oleh karena itu ringkasan tanggapan tidak berguna untuk akurasi jika ada baris yang dihapus untuk menghapus data dari test / palsu / formulir duplikat.
Tapi itu selesai dan saya menyimpan catatan ini untuk waktu berikutnya saya perlu serupa, saya yakin bahwa itu dapat dengan mudah dilakukan dalam waktu kurang dari 30 menit di waktu berikutnya.
Semoga ini bisa membantu, beri tahu saya jika ada pertanyaan.
sumber