🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

解決済

1回答

6914閲覧

GASで既存のフォームの選択肢に「回答に応じてセクション移動」を設置するには

kunix

総合スコア5

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

1グッド

1クリップ

投稿2019/12/08 12:58

前提・実現したいこと

よろしくお願いします。
https://forms.gle/np6R8nM9wvwNLH2T8
このようにGoogleフォームには、もともと2つのセクションが設置されています。
セクション1にある質問1の選択肢に応じて、セクション1で終わるのか、セクション2に進むのかを、GASで指定するにはどのようにすればよろしいでしょうか?
選択肢の中に「研修所」というキーワードが入っているものだけ、セクション2に進めるようにしたいのです。(この場合は選択肢3のみ進めるようにしたい)

質問1の選択肢は、後日、スプレッドシートに記載された内容により変更していきたいため、それに応じた「回答に応じてセクション移動」も設置したいと思っているのです。
スプレッドシートの内容を選択肢に反映させるところ(下記)までは作ることができました。
function changeEventForm(){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = spreadsheet.getSheetByName(選択肢が記載されたシート);
var values = sheet1.getDataRange().getValues();
var valuelength = values.length;

var array = [];
for(var i = 0; i < valuelength; i++){
array.push(values[i][0]);
}
var form = FormApp.openById(フォームID);
var changeitem = form.getItemById(質問1のitemID);
changeitem.asMultipleChoiceItem().setChoiceValues(array);
}

お知恵をお持ちの方、なにとぞご教示ください。

junyouhiro👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

setChoiceValues(values)ではなく、setChoices(choices)をします。

ChoiceにはPageNavigationを設定することができますので、ページ遷移を指定すればよいです。

参考
setChoices(choices)
Choice
PageBreakItem

投稿2019/12/09 01:45

macaron_xxx

総合スコア3191

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

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

kunix

2019/12/09 05:58 編集

macaron_xxxさん ありがとうございました。 リファレンスの見るべきところを教えていただき、とても参考&勉強になりました! 下記のようにChoiceでPageNavigationを設定して、うまく設置することができました。 本当にありがとうございます! function changeEventForm(){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName(選択肢が記載されたシート); var values = sheet1.getDataRange().getValues(); var valuelength = values.length; var form = FormApp.openById(フォームID); var changeitem = form.getItemById(質問1のitemID); var array = []; for(var i = 0; i < valuelength; i++){ if(values[i][0].match(/研修所/) == null){ var choice = changeitem.asMultipleChoiceItem().createChoice(values[i][0], FormApp.PageNavigationType.SUBMIT); } else{ var choice = changeitem.asMultipleChoiceItem().createChoice(values[i][0], FormApp.PageNavigationType.CONTINUE); } array.push(choice); } changeitem.asMultipleChoiceItem().setChoices(array); }
kunix

2019/12/11 03:56

ちなみに、セクションを直接設定する場合は、下記の方法でできました。 function changeEventForm(){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName(選択肢が記載されたシート); var values = sheet1.getDataRange().getValues(); var valuelength = values.length; var form = FormApp.openById(フォームID); var changeitem = form.getItemById(質問1のitemID); var array = []; var page2 = form.getItemById(セクション2のitemID).asPageBreakItem(); for(var i = 0; i < valuelength; i++){ if(values[i][0].match(/研修所/) == null){ var choice = changeitem.asMultipleChoiceItem().createChoice(values[i][0], FormApp.PageNavigationType.SUBMIT); } else{ var choice = changeitem.asMultipleChoiceItem().createChoice(values[i][0], page2); } array.push(choice); } changeitem.asMultipleChoiceItem().setChoices(array); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問