こんにちは、M2の池田です。
アンケートなどでよく使うGoogleフォームですが、GoogleAppsScriptでコードから生成することができます。私は研究でフォーム作成を自動化する必要があったのですが、条件分岐に関する記事が少なく苦労したので、「条件分岐を生成する汎用的なコード」を「Googleフォームの画面」と合わせて紹介します。
フォームの基本的な質問の作成やデータの扱いはこちらの記事にまとまっていますのでぜひご覧ください。
Googleフォームで”得られた回答に応じて次に表示するセクションを決めたい”という条件分岐を作成する場合、編集画面からの操作では、質問右下の3ポチボタンの「回答に応じてセクションに移動」を選択することで実装できます。この条件分岐の方法は、「ラジオボタン」「プルダウン」の2種の質問でのみ使用できます。今回はラジオボタンで作成しました。
質問に応じたセクションの移動(条件分岐)は次のような構造になっています。
管理者の編集画面
ユーザの回答画面
function create_form_sample(){
const form = FormApp.create('フォームサンプル');
//セクション1
form.setTitle('セクション1');
const item = form.addMultipleChoiceItem().setTitle('質問1-1').setRequired(true)
//条件分岐するためのメソッドを用意
const to_2 = form.addPageBreakItem().setTitle('セクション2');
form.addMultipleChoiceItem().setTitle('質問2-1');
//(ここにセクション2の内容を書いていく)
const to_3 = form.addPageBreakItem().setTitle('セクション3');
form.addMultipleChoiceItem().setTitle('質問3-1');
//(ここにセクション3の内容を書いていく)
//質問1-1に条件分岐する選択肢を追加
item.setChoices([
item.createChoice('選択肢1',FormApp.PageNavigationType.RESTART),
item.createChoice('選択肢2',to_2),
item.createChoice('選択肢3',to_3),
item.createChoice('選択肢4',FormApp.PageNavigationType.SUBMIT)
]);
}
※.setRequired(true)
を外し、質問の回答を「必須」にしなかった場合は無回答が可能になり、その場合は順にセクションが表示されます。
今回はGASでGoogleフォームで条件分岐を作る際のコードを操作画面と抱き合わせて紹介しました。
そもそも「Googleフォームをコードから作る必要ある?」という疑問を抱かれた方もいらっしゃると思いますが、自分の研究の場合、被験者のデータをもとに質問を生成していたので、他の被験者にもデータが見えてしまうことを防ぐため、多数の被験者に固有のフォームを作る必要がありました。そこでコードからフォームを自動生成することにしました。簡易的なログイン機能を実装する方法もありますが、簡単に破られてしまうので却下しました。(参考)
ただ、基本的にGoogleフォームはGUIで作った方が楽ですし、必要な機能の実装が難しいのであれば、他のアプリケーションやページを一から作ってデプロイした方が賢いと思います(笑)。「たくさんのGoogleフォームを自動で作りたい」という微かな需要の一助となれたらいいなと思っています。
また、エンジニアとして保守運用の仕事などをしていると「作業内容をスプレッドシートにまとめてそれを手作業でコピペして、、」という光景を多く目にします。GASを使いこなすことができれば、このような作業もぱぱっと自動化でき、活躍できる人材になれるのではないかなと思います。ちなみに、pythonとかでもできます。では。
2021年10月13日にGoogleFormAPIが登場しました。
これにより、RESTやPythonで簡単にGoogleフォームの作成が自動化でき、スタイルもGASより構造化が楽に出来ます。
GoogleはUseCaseとして「大量のデータを元に多くのフォームを自動生成するような用途」などを見込んでいるそうです。微かな需要ではなかったのですね(嬉)
現在はベータ版で、Developerアカウントがあれば利用できます。(公式サイト)
文責:池田