Google Apps Scriptでフォームの分岐をカスタマイズする方法とは?
Googleフォームで特定の応答に基づいて次の質問を変えたいんですけど、GASでできるんでしょうか?

猫男

catman
GASを使えば、Googleフォームの分岐をカスタマイズ可能だ。catmanが手伝ってやろう。
GASを用いたフォームの分岐設定方法
Googleフォームのカスタマイズには、GAS(Google Apps Script)を活用するのが効果的だ。まず、適切なフォームオブジェクトを作成する必要がある。
フォームの基本設定をする方法は以下の通りだ。
var form = FormApp.create('フォーム');
var page2 = form.addPageBreakItem().setTitle('ページ2');
var page3 = form.addPageBreakItem().setTitle('ページ3');
var item = form.addMultipleChoiceItem();
item.setTitle('質問: 好きな色は?')
.setChoices([
item.createChoice('赤', page2),
item.createChoice('青', page3)
]);
ここでは、FormApp.create()で新しいフォームを作成し、addMultipleChoiceItem()で選択肢を追加している。
選択肢ごとにcreateChoice()を用い、ユーザーの応答に応じて次のページが変わるように設定可能だ。
createChoice()に加えて便利なのが、setGoToPage()メソッドだ。
Googleフォームは「次へ」ボタンを押すと自動で次のページへ進む。
がしかし、setGoToPage() を使うと「次へ」で進むページを 任意の場所に変えられるのさ。
var form = FormApp.create("条件付きページ移動フォーム");
var page1 = form.addPageBreakItem().setTitle("ページ1");
var page2 = form.addPageBreakItem().setTitle("ページ2");
var page3 = form.addPageBreakItem().setTitle("ページ3");
// 「ページ1が終わったらページ3へジャンプ」
page1.setGoToPage(page3);
このコードでは、ページ1の最後に表示される「次へ」ボタンを押すとページ3へ飛ぶように設定している。
練習問題
以下の問題を考えてみてほしい。
- GASを使って、フォームに条件付き質問を追加するにはどうすればよいか。
- 複数の選択肢がある質問で、各選択肢に異なるページを設定するコードを書いてみよう。
解答・解説
練習問題1の解答
条件付き質問を追加するためには、選択肢ごとにページ遷移を設定する必要がある。以下のコードを参考にしてほしい。
var form = FormApp.create('条件付きフォーム');
var item = form.addMultipleChoiceItem();
item.setTitle('色を選んでください')
.setChoices([
item.createChoice('赤', FormApp.PageNavigationType.GO_TO_PAGE_TWO),
item.createChoice('青', FormApp.PageNavigationType.GO_TO_PAGE_THREE)
]);
var pageTwo = form.addPageBreakItem().setTitle('赤のページ');
var pageThree = form.addPageBreakItem().setTitle('青のページ');
このコードでは、createChoice()メソッドとPageNavigationTypeを使い、選択された回答に応じて移動するページを設定している。
練習問題2の解答
複数の選択肢があり、それぞれに異なるページを設定する例だ。
var form = FormApp.create('分岐フォーム');
var item = form.addMultipleChoiceItem();
item.setTitle('アクティビティを選択してください')
.setChoices([
item.createChoice('ハイキング', FormApp.PageNavigationType.GO_TO_PAGE_TWO),
item.createChoice('スイミング', FormApp.PageNavigationType.GO_TO_PAGE_THREE),
item.createChoice('読書', FormApp.PageNavigationType.GO_TO_PAGE_FOUR)
]);
var pageTwo = form.addPageBreakItem().setTitle('ハイキング選択');
var pageThree = form.addPageBreakItem().setTitle('スイミング選択');
var pageFour = form.addPageBreakItem().setTitle('読書選択');
ページ二つ追加して、そのページタイトルをそれぞれ設定している。
setTitle()メソッドで質問のタイトル、PageNavigationTypeで選択後のページ移動を設定できる。