Power Automateを動画で学ぼう!Udemyキャンペーン中

[GAS]Googleフォームの質問をスプレッドシートから作成する方法

目次

質問の選択肢が多い時は、スプレッドシートから追加しよう。

プルダウン形式の質問で選択肢(リストアイテム)が多い質問は、手入力が大変ですよね。そんなときはスプレッドシートで元データを作成してからGoogle Apps Script(GAS)で一括登録すると楽で間違いがありません。本記事は、その方法について解説します。

2021年09月補足追記

実をいうと、スプレッドシートの列をコピーして、フォームの 選択肢入力画面のところにペーストすればブラウザでマウス操作するだけで選択肢を一括追加できることがわかりました。今回のケースではマウス操作の方が楽ですね。

ですが、スプレッドシートのA列とB列を文字列結合して回答を追加する場合など、もう少し面倒なことをする場合にはこの記事で紹介するようなGASが必要になってくるケースもあるかと思います。是非覚えて使い分けてくださいね。

想定するケース

▼あるGoogleフォームを作成しているとき、108個の選択肢を用意する必要がありました。(下図)このプルダウン形式の質問と回答をGASで追加します。

Googleフォーム
Googleフォーム

準備

リストアイテムの元データとなるスプレッドシートを用意しましょう。下図のシートを用意しました。こちらのシートはB列以降にもデータが入っているため、必要となるA列だけ抜き取って使用することにします。

image.png

GASコードとGASの実行

下記のようなコードを書きました。
今回は、スプレッドシートのコンテナバインドスクリプトとして作成していますが、フォームのコンテナバインドから作成してもかまいません。その場合、SpreadsheetApp.getActive()を、SpreadsheetApp.openByIdに変更する必要がありますのでご留意ください。

function myFunction() {
  //activeなスプレッドシートの1枚目のシートを取得する。
  const srcst = SpreadsheetApp.getActive().getSheets()[0]; 
  //回答に使用するスプレッドシートのデータA列のみを取得する。
  let values = srcst.getRange(1, 1, srcst.getLastRow() , 1).getValues(); 

  //フォームをフォームIDから取得する。
  const fm = FormApp.openById(formId);

  //フォームにリストアイテム形式の質問を追加する。
  // question 1
  const q1 = fm.addListItem();
  q1.setTitle("翻訳前言語"); //質問のタイトル
  q1.setHelpText("翻訳前の言語を選択してください。"); //質問の説明文
  q1.setChoiceValues(values); //質問の選択肢
  q1.setRequired(true); //回答タイプが必須回答orオプショナル回答(true/false)

  // question 2
  const q2 = fm.addListItem();
  q2.setTitle("翻訳後言語");
  q2.setHelpText("翻訳後の言語を選択してください。");
  q2.setChoiceValues(values);         
  q2.setRequired(true);
}

上記のコードを実行してフォームを確認してみると、質問が追加されるのがわかるかと思います。

さいごに

この記事では、Googleフォームの回答をスプレッドシートから作成する方法について解説しました。このブログではGASの記事ももっと増やしていく予定です。是非RSSやTwitterで更新情報をチェックお願いします!

書籍で学ぶなら、GAS本最強のこちらがオススメ!

GAS初学者の方がテキスト1冊買うならこれ一択です。幅開く網羅されているので基本が身に付きます。

動画で学ぶならコチラがオススメ!

動画で学ぶならコチラがおすすめです。UdemyのGAS講座はいくつかありますが、他の講座と比較しても圧倒的レビュー数と高評価です。万が一の返金保証があるので安心して購入ができます。

ノンプログラマーでも自動化スキルを身につける。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる