#68 フォームの初期値を設定した URL を生成する
この note でアクセスされている記事のうち、アクセス数の多い記事の中に以下のような Google フォームそのものの使い方に関するものが 2番目・3番目となっています。
1番アクセスされているのも Google フォームに関するものですが、Google フォームを使った活用方法となっています。上位 3つがどれも Google フォームに関するものとなっているのは、Google フォームが ICT 活用の肝になってくることを示しているんじゃないか、と思ったり…
今回のプログラムの目的
今回は、以下の記事を参考にして、Google フォームで回答する際に事前に用意した内容が初期値として入力された状態にする方法を紹介します。
今回想定しているのは、
同じGoogle フォームで複数回の回答を行う。
Google フォームで回答する内容を、Google スプレッドシートに用意してある。
というような状況です。この状況に当てはまる場合に、今回のプログラムは、効果的です!
ターゲットとなるフォーム
今回、動作確認用に作成したフォームは下図のような内容となっています。
フォームには 5つの設問があり、「ラジオボタン」「チェックボックス」「日付」「記述式」「段落」で作成した質問となっています。
正規の手順では…
このプログラムで行おうとしていることは、Google フォームの機能として備えられている「その他」→「事前入力した URL を取得」でも同様の URL を作成できます。
しかしながら、この機能を利用できるのは、当該フォームに対して編集権限を持っている人でなければなりません。当該フォームの回答用の URL を知っているだけの回答者には利用できませんし、この機能の手順ではまるで簡略化できているようには思えません。
プログラムを作成する前準備
今回のプログラムは、前述のようにスプレッドシートに回答する内容が控えてあり、その内容を用いて回答するためのものです。そのようなプログラムを作成するためには、対象となるフォームのそれぞれの設問に割り当てられた ID を把握しなければなりません。
Google Chrome を利用している場合、回答用の URL にアクセスした状態で、画面右上の「Google Chrome の設定」→「その他のツール」→「デベロッパー ツール」と選択します。
デベロッパーツールを表示すると、下図のように Google フォームが表示されているページの HTML が確認できます。下図中央の HTML 部分をクリックして、「Ctrl」+「F」を押して、FB_PUBLIC_LOAD_DATA を検索します。
検索すると、下図のように HTML 中の JavaScript の部分が表示されます。
この部分がフォームのそれぞれの質問の ID が記述されている部分です。項目名(タイトル)の次の数字が ID となります。具体的には、マーカーを付して黄緑色で表示されている、以下の値です。
ラジオボタン → 74621491
チェックボックス → 1879337662
日付 → 172083090
テキスト1 → 1342888776
テキスト2 → 1782925682
この値は、このプログラムでの値なので、他のフォームに対して処理するプログラムであれば、上記のような ID を確認するところからはじまります。
プログラム例
実際のプログラムは、以下のような感じです。
自身が利用している Google アカウントでログインしている状態で、下記の URL にアクセスします。GAS のプログラムが保存されたスプレッドシートが、自身の Google ドライブにコピーされます。
https://docs.google.com/spreadsheets/d/1STOFySqkkSoXAZBkN01lKM271-8g9aaiemylnRbQBuk/copy
コピーされたスプレッドシートは、下図のような感じになっています。5つの設問に対する回答内容を、スプレッドシートに記入しておき、メニューから「追加メニュー」→「フォーム URL の生成」を選択すると、列 J「URL」のその行の内容で回答の初期値を設定する URL が設定されます。
実行例
上図の 2行目にカーソル(アクティブセル)がある状態で、「追加メニュー」→「フォーム URL の生成」を選択し、生成された URL にアクセスすると、下図のように初期値が設定されました。
プログラムのポイント
今回のプログラムで注意する点を書き連ねておきます。
「ラジオボタン」と「チェックボックス」の選択状態を設定するときは、選択状態にする選択肢の文字列(上図の「ラジオボタン」であれば「ラジオ1」)を指定する。
指定する文字列は、制御コードなどを含んでいると正しく動作しないので、encodeURIComponent() でエンコードしておく。
「ラジオボタン」で複数の初期状態を選択した場合、最初の選択肢が選択された状態になるようです。
「チェックボックス」は、選択状態にしたい選択肢の分だけ、処理を行う。
「日付」の初期状態を設定するときは、「2023-01-12」という体裁で - で年月日をつなぐ。
「メールアドレスを収集する」をオンにしたときの「メールアドレス」の欄については、初期状態を設定できないようです。
最後に
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 80行程度のスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
今回のプログラムについては、対象となるフォームによって、カスタマイズが必要となるので、そのままコピーしても利用できません。
上述したように、対象となるフォームでそれぞれの質問の ID を確認するなどして、目的に応じたプログラムにカスタマイズしてください。
なお、コピー元の Google スプレッドシート内のプログラムには、Googleフォームの回答用 URL が記載されています。動作を確認するためにご利用いただいて構いませんが、このフォームに回答を送信されても、応答しないことをあらかじめご了承ください。
この記事が気に入ったらサポートをしてみませんか?