GASでフォームの複数選択式質問を自動生成!定期実行でアンケートを効率化

GASでフォームの複数選択式質問を自動生成!定期実行でアンケートを効率化

Google Apps Script(GAS)を活用して、Googleフォームの複数選択式質問を自動生成し、定期的にアンケートを送信する仕組みを構築する方法を解説します。この自動化により、手作業によるアンケート作成の負担を軽減し、効率的なデータ収集を実現します。

Form.addMultipleChoiceItemとは?

Form.addMultipleChoiceItem()は、GASでGoogleフォームに複数選択式の質問項目を追加するためのメソッドです。このメソッドを使うことで、プログラムから動的に質問項目とその選択肢を作成できます。

基本的な使い方

Form.addMultipleChoiceItem(title)で質問のタイトルを指定し、.setChoices(choices)で選択肢の配列を設定します。

// フォームを開く
function createFormWithMultipleChoice() {
const form = FormApp.create("アンケート");

// 複数選択式の質問を追加
const multipleChoice = form.addMultipleChoiceItem("好きな果物を選んでください");
multipleChoice.setChoices([
multipleChoice.createChoice("りんご"),
multipleChoice.createChoice("みかん"),
multipleChoice.createChoice("ぶどう"),
multipleChoice.createChoice("その他")
]);

// フォームを公開
Logger.log("フォームのURL: " + form.getPublishedUrl());
}

定期実行アンケートでの実装方法

GASのトリガー機能を利用して、定期的にアンケートを送信する仕組みを構築します。例えば、毎週特定の曜日に自動でアンケートを送信することができます。

実装例1:毎週月曜日にアンケートを送信

// 毎週月曜日にアンケートを送信する関数
function sendWeeklySurvey() {
// フォームの作成または既存のフォームを開く
const form = FormApp.openById("フォームID");

// 質問項目を動的に生成(例:現在のプロジェクトの進捗状況)
const multipleChoice = form.addMultipleChoiceItem("今週のプロジェクトの進捗状況はどうですか?");
multipleChoice.setChoices([
multipleChoice.createChoice("順調"),
multipleChoice.createChoice("やや遅れ気味"),
multipleChoice.createChoice("大幅に遅れている"),
multipleChoice.createChoice("完了")
]);

// 回答をリセット(任意)
// form.deleteAllResponses();

// フォームのURLを取得
const formUrl = form.getPublishedUrl();

// メールを送信
const recipient = "example@example.com"; // 送信先のメールアドレス
const subject = "【毎週アンケート】プロジェクト進捗状況";
const body = "以下のURLからアンケートにご回答ください:\n" + formUrl;
MailApp.sendEmail(recipient, subject, body);
}

// トリガーを設定する関数(初回のみ実行)
function createWeeklyTrigger() {
// 既存のトリガーを削除
const triggers = ScriptApp.getProjectTriggers();
for (const trigger of triggers) {
ScriptApp.deleteTrigger(trigger);
}

// 毎週月曜日の午前9時に実行するトリガーを作成
ScriptApp.newTrigger("sendWeeklySurvey")
.timeBased()
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(9)
.everyWeeks(1)
.create();
}

実装例2:特定の条件で選択肢を動的に変更する

スプレッドシートのデータに基づいて、選択肢を動的に変更する例です。例えば、プロジェクト名や担当者名を選択肢として表示する場合に有効です。

function createFormWithDynamicChoices() {
const form = FormApp.create("プロジェクト進捗アンケート");
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("プロジェクトリスト");
const data = sheet.getDataRange().getValues();

// 1行目はヘッダーなのでスキップ
const projectNames = data.slice(1).map(row => row[0]);

const multipleChoice = form.addMultipleChoiceItem("どのプロジェクトの進捗状況ですか?");
const choices = projectNames.map(projectName => multipleChoice.createChoice(projectName));
multipleChoice.setChoices(choices);

Logger.log("フォームURL: " + form.getPublishedUrl());
}

よくある問題とトラブルシューティング

  • フォームが作成されない:GASの実行権限を確認してください。
  • トリガーが設定できない:プロジェクトに十分な権限があるか確認してください。
  • 選択肢が正しく表示されない:スプレッドシートのデータが正しい形式であるか確認してください。

カスタマイズ方法と応用例

  • 回答に応じて次の質問を変える:FormResponse.getItemResponses()を使って回答を取得し、条件分岐で次の質問を制御します。
  • アンケート結果を自動集計:フォームの回答をスプレッドシートに自動的に記録し、集計関数を使って結果を分析します。

まとめ

GASのForm.addMultipleChoiceItem()メソッドとトリガー機能を組み合わせることで、定期的なアンケートを自動化し、効率的なデータ収集を実現できます。ぜひ、業務改善に役立ててください。

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう