質問するログイン新規登録
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

6140閲覧

GASでGoogleフォーム作成を自動化。セクション分けした場合セクション終了後にフォーム送信に行かずセクション2にいってしまいます

kihokutarou

総合スコア60

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2022/02/17 00:36

編集2022/02/17 06:28

0

1

GASでフォーム作成を自動化しています。

進学か就職かでセクションを分けているのですが、1つ目のセクションである進学の回答終了後フォーム送信にならず、就職のセクションに入ってしまいます。

script

1 form.setTitle('共通'); 2 const item = form.addMultipleChoiceItem().setTitle('進路について').setRequired(true) 3 4 //ここから進学 5 const to_1 = form.addPageBreakItem().setTitle('進学について'); 6 //略 for文で回しています 7 const to_2 = form.addPageBreakItem().setTitle('就職について'); 8 //略 for文で回しています 9 10 11 12 item.setChoices([ 13 item.createChoice('進学',to_1), 14 item.createChoice('就職',to_2), 15 ]);

下図「フォームを送信」にできればよいと思うのですが、どのように記述すればよいでしょうか。
イメージ説明

ご回答に関する補足
回答ありがとうございます。
ご指摘の
.setGoToPage(FormApp.PageNavigationType.SUBMIT);
ですが、この記述は直前のセクションにかかるのではないでしょうか?つまり問題のto_1 ではなく、その前のセクションにかかると認識しています。
上記画像同様、初めのセクションでフォーム送信が設定されました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/02/26 23:36 編集

コードを修正・追記しました
guest

回答1

0

ベストアンサー

すでに試されているかもしれませんが、送信を表示させたい直後のセクションに対し、setGoToPage()メソッドで送信を設定してみてはいかがでしょうか。
https://developers.google.com/apps-script/reference/forms/page-break-item#setgotopagenavigationtype

const to_2 = form.addPageBreakItem().setTitle('就職について') .setGoToPage(FormApp.PageNavigationType.SUBMIT);

to_2 に .setGoToPage(FormApp.PageNavigationType.SUBMIT)を設定することで、「to_2ののセクション」であるto_1の回答欄の下部に「送信」ボタンを表示できる"可能性"があります。(必ず表示できると言っているわけではありません。後述)

たとえば手元の環境では、下記のコードで期待通りに動いています。

js

1function myFunction() { 2 3 const form = FormApp.getActiveForm() 4 form.setTitle('共通'); 5 6 // 共通の選択肢の箱を作っておく 7 const item = form.addMultipleChoiceItem().setTitle('進路について').setRequired(true); 8 9 // セクション:進学 10 const to_1 = form.addPageBreakItem().setTitle('進学について'); 11 12 //進学の選択肢 13 const item1 = form.addMultipleChoiceItem().setTitle('下記から、進学希望先を選択してください。').setRequired(true); 14 item1.setChoices([ 15 item1.createChoice('大学'), 16 item1.createChoice('短大'), 17 ]) 18 19 //セクション:就職 20 const to_2 = form.addPageBreakItem().setTitle('就職について'); 21 22 // to_2の「前」のセクションの回答欄に、送信ボタンを表示 23 to_2.setGoToPage(FormApp.PageNavigationType.SUBMIT); 24 25 // 就職の選択肢 26 const item2 = form.addMultipleChoiceItem().setTitle('就職先はどの業種を希望していますか').setRequired(true); 27 item2.setChoices([ 28 item2.createChoice('総合職'), 29 item2.createChoice('一般職'), 30 ]); 31 32 // 最後に共通の選択肢を設定 33 item.setChoices([ 34 item.createChoice('進学', to_1), 35 item.createChoice('就職', to_2), 36 ]); 37}

しかしながら、オブジェクトの生成・挿入順序によっては思い通りに行かない場合もあるようです。
質問者さんの手持ちのコードでもうまくいくかは(コードが一部しか記載されていないため)わかりかねます。


別解として、choiceそのものの遷移先にSUBMITを設定する方法もあります。
この場合、回答欄の下部に送信ボタンは表示されませんが、回答後、送信ボタンだけが表示されたページに遷移します。

js

1 const item1 = form.addMultipleChoiceItem().setTitle('下記から、進学希望先を選択してください。').setRequired(true); 2 item1.setChoices([ 3 item1.createChoice('大学', FormApp.PageNavigationType.SUBMIT), 4 item1.createChoice('短大', FormApp.PageNavigationType.SUBMIT), 5 ])

投稿2022/02/17 01:59

編集2022/02/22 16:22
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問