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

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

本記事では、Google Apps Script(GAS)のForm.addMultipleChoiceItem関数に焦点を当て、自動化処理、特に定期実行によるアンケートの効率化について解説します。アンケート作成の課題を解決し、時間と手間を大幅に削減します。

Form.addMultipleChoiceItemとは?

Form.addMultipleChoiceItem()は、Googleフォームに複数選択式の質問項目を追加するためのGASの関数です。この関数を使用することで、プログラミングによってフォームの質問を自動的に作成・更新できます。

基本構文

Form.addMultipleChoiceItem()

この関数はMultipleChoiceItemオブジェクトを返します。このオブジェクトを使用して、質問のタイトルや選択肢などを設定します。

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

定期的にアンケートを送信し、回答を収集するシナリオを考えます。例えば、毎月従業員満足度調査を実施する場合、GASを使用することでフォームの作成、送信、結果の集計を自動化できます。

実装例1:毎月自動でアンケートフォームを作成

この例では、毎月1日に新しいアンケートフォームを作成し、複数の質問を追加します。

function createMonthlySurvey() {
// フォームを作成
const form = FormApp.create('従業員満足度調査(' + Utilities.formatDate(new Date(), 'JST', 'yyyy年MM月') + ')');

// 質問1:総合的な満足度
const item1 = form.addMultipleChoiceItem()
.setTitle('現在の仕事に対する総合的な満足度はいかがですか?')
.setChoices([
form.createChoice('非常に満足'),
form.createChoice('満足'),
form.createChoice('普通'),
form.createChoice('不満'),
form.createChoice('非常に不満')
])
.setRequired(true);

// 質問2:職場の人間関係
const item2 = form.addMultipleChoiceItem()
.setTitle('職場の人間関係についてどう思いますか?')
.setChoices([
form.createChoice('非常に良い'),
form.createChoice('良い'),
form.createChoice('普通'),
form.createChoice('悪い'),
form.createChoice('非常に悪い')
])
.setRequired(true);

// フォームのURLをログに出力
Logger.log('フォームのURL: ' + form.getPublishedUrl());
}

実装例2:既存のフォームに選択肢を動的に追加

この例では、既存のフォームに新しい選択肢を動的に追加します。例えば、アンケートの回答結果に基づいて、新しい選択肢を追加する場合などに使用できます。

function addChoiceToForm() {
// フォームID
const formId = 'YOUR_FORM_ID';
const form = FormApp.openById(formId);

// 質問のタイトル
const questionTitle = 'ご希望の研修内容を教えてください';

// 質問項目を取得
const items = form.getItems();
let targetItem = null;
for (let i = 0; i < items.length; i++) {
if (items[i].getTitle() === questionTitle && items[i].getType() === FormApp.ItemType.MULTIPLE_CHOICE) {
targetItem = items[i].asMultipleChoiceItem();
break;
}
}

// 質問項目が存在しない場合、エラーを出す
if (!targetItem) {
Logger.log('質問「' + questionTitle + '」が見つかりません。');
return;
}

// 追加する選択肢
const newChoice = '新しい研修テーマ';

// 選択肢を追加
targetItem.createChoice(newChoice);

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

実装例3:スプレッドシートから選択肢を読み込む

この例では、スプレッドシートに保存された選択肢を読み込み、フォームに追加します。アンケートの選択肢を簡単に管理できます。

function createFormFromSheet() {
// スプレッドシートID
const spreadsheetId = 'YOUR_SPREADSHEET_ID';
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName('選択肢');

// 質問のタイトル
const questionTitle = '興味のある分野を選択してください';

// 選択肢のリストを取得(A列に選択肢が記載されていると仮定)
const choices = sheet.getRange('A1:A' + sheet.getLastRow()).getValues().flat();

// フォームを作成
const form = FormApp.create('興味のある分野調査');

// 複数選択式の質問を追加
const item = form.addMultipleChoiceItem()
.setTitle(questionTitle)
.setChoices(choices.map(choice => form.createChoice(choice)))
.setRequired(true);

// フォームのURLをログに出力
Logger.log('フォームのURL: ' + form.getPublishedUrl());
}

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

  • フォームが作成されない:GASの実行権限が不足している可能性があります。スクリプトエディタで権限を確認し、許可してください。
  • 選択肢が追加されない:フォームIDまたは質問タイトルが間違っている可能性があります。正しい情報を入力してください。
  • タイムアウトエラー:処理に時間がかかりすぎるとタイムアウトが発生する場合があります。処理を分割するか、Utilities.sleep()を使用して処理を遅延させてください。

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

  • 条件分岐:回答内容に応じて異なる質問を表示する条件分岐を実装できます。
  • 回答の自動集計:フォームの回答を自動的にスプレッドシートに集計できます。
  • メール通知:フォームが回答された際に、メールで通知を受け取ることができます。

まとめ

Form.addMultipleChoiceItem関数とGASの定期実行機能を組み合わせることで、アンケート作成を大幅に効率化できます。本記事で紹介したコード例を参考に、ぜひ業務に役立ててください。

PR

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

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