Day85: 2024/1/18(木)
GoogleForm にGoogleSheetからデータをインポートするスクリプトがうまく動いた件を記録に残しておきます。
私は今週は後期の授業の教材作りに励んでいます。GoogleFormを使って授業の内容の確認テストをたくさん作っているのですが、学生の名前や学生番号をテストのたびに入力してもらうのは学生も面倒だし、入力ミスもあるので、良い方法はないかなぁと考えていました。授業を受講する学生の名簿を入手したので、ドロップダウンで選択する方法をとることにしました。問題は学生全員のデータをドロップダウンリストに入力するのに手間がかかることです。GoogleFormを使った確認テストは50個以上あり、今後も増える予定です。エクセルのデータをGoogleFormに自動でインポートする方法がないか、”Google form dropdown file upload”というキーワードでインターネットで探していると、いろいろな情報がありました。Youtubeのこのビデオ(https://youtu.be/o3AL7ASI_cA?si=KhoMyGWfccWu756Z)を参考にしてGoogle Scriptを作成したところ、さくっとデータがインポートされました。これで作業時間が1/10ぐらいに短縮できました。

最初のGoogle Formでは学生の”Last Name”, “First Name”, “Email Address”の質問項目に手入力するデザインにしていました。
学生が毎回同じデータを入力するのは面倒だし、手入力だと入力ミスがあるかもしれません。

学生番号のリストを入手したので(画像はサンプルデータです)Google Sheetに入力しました。このデータをGoogle FormのDropDown Listのデータとして自動入力したいです。そうすると学生数が増減したり、新学期になって、受講生が変わっても、簡単に更新ができます。
手順:
- Step1. Google FormにDropdownの質問を作成。
- Step2. 質問のタイトルを“Student number & Your name Test”とする。

3. Step3. Google Sheetにデータを入力。先頭行にGoogle Formの質問タイトルと同じ文字列“Student number & Your name Test”と入れる。

4. Step4. Google Sheetの[Extention] – [Apps Script]を選択。
私は今回初めてGoogle Scriptを使ってスクリプトを作っています。

5. Step5. Youtubeのビデオを参考にして、スクリプを記述。Google SheetとGoogle FormのIDはそれぞれのURLから取得します。詳しくはYoutubeを参照。

スクリプトの内容はこんな感じ。(使用する方は自己責任でお願いします) var ssID = “xxxxxxxxxxxxxxxxxxxxx”; // update the formID from the test form var formID = “xxxxxxxxxxxxxxxx”; var form = FormApp.openById(formID); var wsData = SpreadsheetApp.openById(ssID).getSheetByName(“data”); function main(){ var labels = wsData.getRange(1, 1, 1, wsData.getLastColumn()).getValues()[0]; labels.forEach(function(label,i){ var options = wsData .getRange(2, i + 1, wsData.getLastRow()-1,1) .getValues() .map(function(o){ return o[0]}); updateDropDownUsingTitle(label,options); }); } function updateDropDownUsingTitle(title,values){ var items = form.getItems(); var titles = items.map(function(item){ return item.getTitle(); }); var pos = titles.indexOf(title); var item = items[pos]; var itemID = item.getId(); updateDropdown(itemID,values); } function updateDropdown(id,values){ var item = form.getItemById(id); item.asListItem().setChoiceValues(values); } |
6. Step6. [Run]をクリックしてスクリプトを実行。”Execution Log”にエラーがなく”Execution completed”と表示されると成功です。何度もエラーになったのでデバッグをした後、成功するようになりました。

7. このようにデータがインポートされました。

8. Google Formのプレビューで見てみると、Dropdownで学生番号が選択できるようになりました。成功!

今日のモンゴル語
Оюутны дугаарыг оруулахдаа “google script” ашиглацгаая.
(Oyuutny dugaaryg oruulakhdaa “google script” ashiglatsgaaya.)
学生番号をインポートするために”Google Script”を使いましょう。