前提・実現したいこと
Google Apps Scriptを用いて
入力内容(プルダウンでの入力)によって違うセクションへ画面遷移するのを作りたいと思っています。
プルダウンの内容はスプレッドシートから取得してフォームに反映させたいと考えています。
イメージとしましては、
①、1ページ目に都道府県を選択
②、2ページ目にその都道府県の市町村が選択できる画面
ラジオボタンで画面遷移が可能な参考サイトを見つける事が出来たのですが、
プルダウンでの方法を見つける事が出来なかった為に質問させて頂きました。
以下のソースコードでは、
既存のフォームにスプレッドシートのデータを反映させておりますが、
スプレッドシートのデータから新規フォームを作成する事で上記内容が実現可能となるのであれば、
どちらの方法でもよいと考えております。
セクション分けのaddPageBreakItem().setTitle('セクション名')を、
どのように使用すれば良いのかが分からなくて質問させて頂きました。
当方の実力不足で至らぬ点が多々あるかと思いますが、
何卒アドバイス等のほどよろしくお願い致します。
該当のソースコード
function overwriteDjList() {
/** スプレッドシートの情報を取得する **/
var SID = PropertiesService.getScriptProperties().getProperty('SID');
var sheets = SpreadsheetApp.openById(SID).getSheets();
// シートの情報を取得
var Prefectures = new Array(); //都道府県
var Municipalities = new Array(); //市町村
for (var i = 0; i < sheets.length; i++){
if(sheets[i].getName() == "都道府県"){
Prefectures = sheets[i].getDataRange().getValues();
}
}
if (Prefectures.length != sheets.length - 1) { //都道府県シートは除外
Browser.msgBox("都道府県シートの行数と市町村のシート数が違うので処理を中止しました。");
return;
}
for (var i = 0; i < Prefectures.length; i++){ //都道府県シートのデータと同じシート名のデータを取得する。
for (var j = 0; j < sheets.length; j++){
if (Prefectures[i] == sheets[j].getName()){
Municipalities.push(sheets[j].getDataRange().getValues());
break;
}
}
}
if (Prefectures.length != Municipalities.length) {
Browser.msgBox("都道府県名のシート名が間違っているので処理を中止しました");
return;
}
/** Googleフォームのプルダウン内の値を上書きする **/
var FID = PropertiesService.getScriptProperties().getProperty('FID');
var form = FormApp.openById(FID);
// 質問項目がプルダウンのもののみ取得
var items = form.getItems(FormApp.ItemType.LIST);
for (var i = 0; i < items.length; i++){
if (items[i].getTitle().match(/都道府県.*$/)) { //タイトルが含まれるもの
var qui = items[i].asListItem(); //変数quiにobjectを格納
break;
}
}
var choices = new Array();
for (var i = 0; i < Prefectures.length; i++){
choices.push(qui.createChoice(Prefectures[i][0]));
}
qui.setChoices(choices)
}
あなたの回答
tips
プレビュー