GASでアンケートの回答項目を動的に制御!MultipleChoiceItem.setTitleでデータ分析を効率化
データ分析において、アンケートフォームの回答項目は重要な情報源です。特に、回答項目が分析結果に応じて動的に変化する場合、その柔軟性はデータ分析の精度と効率を大きく向上させます。本記事では、Google Apps Script(GAS)のMultipleChoiceItem.setTitle
メソッドを利用して、アンケートの回答項目を動的に制御し、データ分析を効率化する方法について解説します。
MultipleChoiceItem.setTitleとは
MultipleChoiceItem.setTitle
は、Google Forms APIで使用されるGASのメソッドの一つで、複数選択式の質問項目(MultipleChoiceItem)のタイトル(質問文)を設定するために使用されます。このメソッドを利用することで、アンケートの回答状況や他のデータに基づいて質問内容を動的に変更することが可能になります。
基本構文
multipleChoiceItem.setTitle(title)
multipleChoiceItem
: 変更対象となるMultipleChoiceItemオブジェクトtitle
: 設定する新しいタイトル(文字列)
データ分析におけるMultipleChoiceItem.setTitleの活用
データ分析の現場では、アンケート結果に応じて次の質問内容を変えたい、あるいは特定の条件を満たす回答者に対してのみ追加の質問をしたいといったニーズがあります。MultipleChoiceItem.setTitle
を使うことで、これらのニーズに柔軟に対応できます。
利用シチュエーション:レポート作成
アンケートの回答結果を基にレポートを作成する際、特定の回答に基づいて追加の質問項目を表示したり、質問文言を調整したりすることで、より詳細な分析が可能になります。
利用シチュエーション:グラフ生成
アンケート結果をグラフで可視化する際に、回答の傾向に合わせて質問項目を調整することで、グラフの解釈を容易にし、より深い洞察を得ることができます。
利用シチュエーション:統計処理
統計処理を行う際に、特定の条件に合致する回答者群に対して、追加の質問を行うことで、より詳細な統計分析が可能になります。
実装例:回答に基づいた質問項目の動的変更
以下は、アンケートの回答に基づいて質問項目を動的に変更するGASの実装例です。
function updateQuestionTitle() {
// フォームのIDを設定
const formId = "YOUR_FORM_ID";
const form = FormApp.openById(formId);
// 質問項目のIDを設定 (複数選択式質問)
const questionId = "YOUR_QUESTION_ID";
const item = form.getItemById(questionId).asMultipleChoiceItem();
// スプレッドシートから回答を取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const lastRow = sheet.getLastRow();
const answer = sheet.getRange(lastRow, 1).getValue(); // 1列目の最新の回答を取得
// 回答に応じて質問のタイトルを変更
if (answer == "はい") {
item.setTitle("はいと答えた理由を教えてください");
} else {
item.setTitle("いいえと答えた理由を教えてください");
}
}
上記のコードでは、スプレッドシートに記録された最新の回答を取得し、その回答が「はい」であれば質問のタイトルを「はいと答えた理由を教えてください」に、「いいえ」であれば「いいえと答えた理由を教えてください」に変更しています。
実装例:特定の条件を満たす回答者への追加質問
特定の条件を満たす回答者に対してのみ追加の質問を表示する例です。
function addConditionalQuestion() {
// フォームのIDを設定
const formId = "YOUR_FORM_ID";
const form = FormApp.openById(formId);
// スプレッドシートから回答を取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const lastRow = sheet.getLastRow();
const answer = sheet.getRange(lastRow, 1).getValue(); // 1列目の最新の回答を取得
// 特定の条件を満たす場合のみ質問を追加
if (answer == "はい") {
// 質問項目を追加
form.addTextItem().setTitle("はいと答えた具体的な理由を記述してください");
}
}
この例では、回答が「はい」の場合にのみ、自由記述式の質問項目を追加しています。
よくある問題とトラブルシューティング
質問のタイトルが変更されない
質問項目のIDが間違っている可能性があります。form.getItemById(questionId)
で正しい質問項目が取得できているか確認してください。また、formId
が正しいか確認してください。
エラーが発生する
GASの実行権限が不足している可能性があります。スクリプトエディタ上で権限を確認し、必要な権限を付与してください。
カスタマイズ方法と応用例
- 質問項目の動的な表示/非表示:
MultipleChoiceItem.showForItem()
と組み合わせて、特定の回答に基づいて質問項目を表示/非表示することができます。 - 質問項目の内容のパーソナライズ: 回答者の属性情報(年齢、性別など)に基づいて質問項目をカスタマイズすることができます。
まとめ
MultipleChoiceItem.setTitle
メソッドを活用することで、アンケートの回答項目を動的に制御し、データ分析を効率化することができます。本記事で紹介した実装例やトラブルシューティングを参考に、ぜひGASを活用したアンケートフォームの作成に挑戦してみてください。