Googleフォームの質問の選択肢をスプレッドシートのデータから生成するGAS関数の作り方


choices

photo credit: Dean Hochman hobby lobby via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASでGoogleフォームを一気に作成するツールを作成しています。

前回の記事はコチラです。

GASでGoogleフォームにプルダウンリストの質問を追加する方法
GASでGoogleフォームを一発で作成するツールを作成しています。今回は、プルダウンリストを作成していきます。GASでGoogleフォームにスプレッドシートからの選択肢をもとにプルダウンリストを追加する方法です。

プルダウンリストの質問を追加する方法をお伝えしました。

さて、そのプルダウンですが「お住まいの都道府県は?」という質問にしたいんですね。

てことは、選択肢が47あります。

スクリプト内に配列要素をベタ打ちするの、ちょっと面倒ですね。

ということで、今回はGoogleフォームの質問の選択肢をスプレッドシートのデータから生成するGAS関数の作り方です。

では、行ってみましょう!

前回までのおさらい

前回までに作成したスクリプトはコチラです。

だいぶ長くなりましたね。

34行目のsetChoiceValuesメソッドですが、まだ引数として渡す変数prefValuesの定義ができていません。

この変数には、「お住いの都道府県は?」の回答の選択肢の配列をセットする必要がありますね。

47都道府県をスクリプトベタ打ちは大変ですので、スプレッドシートの入力値から配列を生成をしていきたいと思います。

また、それと合わせて、23行目のラジオボタン、28行目のチェックボックスも、スプレッドシートの入力値から配列を生成しますね。

スプレッドシートに選択肢のデータを準備

まず、スプレッドシートに以下のようなシートを追加で用意します。

スプレッドシートに項目データのシートを準備する

「項目データ」というシート名で

  • A列:OS
  • B列:プログラム言語
  • C列:都道府県

のデータを列挙したものです。

それぞれの列に存在するデータを、対応するフォームの質問の選択肢として使用していきます。

シートの項目データから選択肢の配列を生成する

まず、以下のスクリプトにより、「項目データ」シートのデータを二次元配列として格納します。

そして、この二次元配列dataValuesと、列数を渡すことで、その列のデータを一次元配列に格納する関数generateArrayを作りました。

コチラです。

columnには0以上のインデックス値を渡します。

values[i][column]がtrueであれば(つまり、意味のあるデータが含まれていれば)、pushメソッドにより配列arrayにそのデータが追加されていきます。

空文字などのデータであれば、values[i][column]はfalseになりますから、配列には何の変化も与えられません。

例えば、A列のOSのデータを生成したければ、「0」を指定して

というふうに呼び出せばOKです。

すると、[Windows, Mac]という配列が戻り値として与えられるということになるはずです。

フォームの選択肢の生成を関数化したスクリプト

以上を踏まえて、各質問についてスプレッドシートから選択肢を取得するように、スクリプトを修正してみました。

こちらです。

44行目以降が、フォームの質問の選択肢を作るための関数generateArrayです。

メインの関数createEventFormについては、5~8行目が追加されたポイントですね。

まず、「項目データ」シートのデータを二次元配列として取得しつつ、各列について選択肢の配列を生成しています。

上記スクリプトを実行すると、以下のようなフォームが作成されます。

フォームの各質問の選択肢

プルダウンをクリックすると、以下のように全ての都道府県の選択肢が含まれていることが確認できます。

フォームのプルダウンリストで都道府県を選択する

まとめ

以上、GASでGoogleフォームの質問の選択肢をスプレッドシートのデータから構成する方法をお伝えしました。

質問とその選択肢が増えても、ちょちょっとスクリプトに追加すればOKですね。

あ、今回紹介したのは、あくまで新規フォームの作成時の選択肢の取得ですからね。既に作成してあるフォームの選択肢を変更したいのであれば、スクリプトの作り方もちょっと変わります。

さて、次回ですが、その他色々なフォームの質問とその作り方について紹介します。

どうぞお楽しみに!

連載目次:GASでGoogleフォームを一発で作成するツールを作る

イベントの申し込みやアンケートにとっても便利なGoogleフォーム。スプレッドシートの入力内容をもとに、一発でフォームを作成するツールを作っていきます。
  1. GASでGoogleフォームを作成する最も簡単なスクリプト
  2. GASで作成したGoogleフォームを指定のフォルダに移動する方法
  3. GASでGoogleフォームに記述式の質問を追加する方法
  4. GASでGoogleフォームにメールアドレスの入力欄とバリデーションを追加する方法
  5. GASでGoogleフォームにラジオボタンの質問を追加する方法
  6. GASでGoogleフォームにチェックボックス形式の質問を追加する方法
  7. GASでGoogleフォームにプルダウンリストの質問を追加する方法
  8. Googleフォームの質問の選択肢をスプレッドシートのデータから生成するGAS関数の作り方

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント