質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

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

Google フォーム

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

Google Apps Script

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

Q&A

0回答

750閲覧

Google Apps Scriptを用いてプルダウンによるセクション分岐

yururissy

総合スコア4

Google スプレッドシート

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

Google フォーム

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

Google Apps Script

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

1グッド

2クリップ

投稿2020/03/12 08:50

前提・実現したいこと

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)
}

s.k👍を押しています

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

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

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

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

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

papinianus

2020/03/12 09:21

> ラジオボタンで画面遷移が可能な参考サイト urlを開示いただけませんでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問