GoogleフォームとGASでアンケート結果を自動集計!スプレッドシートへの反映の秘訣
はじめに
Googleフォームは、アンケートやフィードバックの収集に便利なツールです。ユーザーは自由に質問を作成し、回答をGoogleスプレッドシートに自動的に保存することができます。この記事では、Googleフォームから得たデータをGoogle Apps Script (GAS) を使用して自動的に集計し、その結果をスプレッドシートに反映させる方法を解説します。
1. Googleフォームとは何か?
Googleフォームは、Googleが提供する無料のアンケート作成ツールです。使いやすいインターフェースで質問を作成し、リンクを共有するだけで簡単に回答を収集できます。回答は自動的にGoogleスプレッドシートに保存され、リアルタイムでデータを確認することができます。
2. GASとの連携
Google Apps Script (GAS) は、Google Workspaceの各種サービスを自動化したり、カスタマイズしたりするためのスクリプト言語です。GASを使用すると、Googleフォームから送信されたデータを自動的に処理し、集計結果をスプレッドシートに反映することが可能になります。これにより、手作業でのデータ集計の手間を大幅に削減し、作業の効率化を図ることができます。
3. アンケート結果の自動集計
以下に、Googleフォームから送信されたアンケート結果を自動的に集計するためのGASのコード例を示します。
function aggregateSurveyResults() {
try {
var form = FormApp.getActiveForm();
if (!form) throw new Error("アクティブなフォームが見つかりません");
var responses = form.getResponses();
var aggregatedData = {};
responses.forEach(function(response) {
var itemResponses = response.getItemResponses();
itemResponses.forEach(function(itemResponse) {
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();
if (!aggregatedData[question]) {
aggregatedData[question] = {};
}
if (!aggregatedData[question][answer]) {
aggregatedData[question][answer] = 0;
}
aggregatedData[question][answer]++;
});
});
return aggregatedData;
} catch (e) {
Logger.log("Error: " + e.message);
}
}
このスクリプトは、Googleフォームの回答を取得し、各質問ごとに回答を集計します。これにより、質問ごとにどの回答がどれだけあったかを簡単に把握できます。
4. スプレッドシートへの反映
集計されたアンケート結果をスプレッドシートに自動的に反映するためのGASのコード例を以下に示します。
function reflectResultsToSpreadsheet() {
try {
var aggregatedData = aggregateSurveyResults();
if (!aggregatedData) throw new Error("集計データがありません");
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Survey Results');
if (!sheet) {
sheet = spreadsheet.insertSheet('Survey Results');
} else {
sheet.clear(); // 既存のデータをクリア
}
sheet.getRange(1, 1).setValue('質問');
sheet.getRange(1, 2).setValue('回答');
sheet.getRange(1, 3).setValue('カウント');
var row = 2; // データを挿入する開始行を指定
for (var question in aggregatedData) {
var answers = aggregatedData[question];
for (var answer in answers) {
var count = answers[answer];
sheet.getRange(row, 1).setValue(question);
sheet.getRange(row, 2).setValue(answer);
sheet.getRange(row, 3).setValue(count);
row++;
}
}
} catch (e) {
Logger.log("Error: " + e.message);
}
}
このスクリプトは、集計されたデータをSurvey Resultsシートに書き込みます。各質問に対して回答とそのカウントを記載することで、視覚的に結果を確認できるようになります。
5. GASでのエラーハンドリング
GASでの一般的なエラーとその対処法について説明します。例えば、フォームが見つからない場合や、データが不足している場合など、さまざまなエラーが発生する可能性があります。これらのエラーを適切にハンドリングすることで、スクリプトの安定性と信頼性を向上させることができます。
function aggregateSurveyResults() {
try {
var form = FormApp.getActiveForm();
if (!form) throw new Error("アクティブなフォームが見つかりません");
var responses = form.getResponses();
var aggregatedData = {};
responses.forEach(function(response) {
var itemResponses = response.getItemResponses();
itemResponses.forEach(function(itemResponse) {
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();
if (!aggregatedData[question]) {
aggregatedData[question] = {};
}
if (!aggregatedData[question][answer]) {
aggregatedData[question][answer] = 0;
}
aggregatedData[question][answer]++;
});
});
return aggregatedData;
} catch (e) {
Logger.log("Error: " + e.message);
}
}
このスクリプトは、フォームが見つからない場合やその他のエラーが発生した場合にエラーメッセージを記録します。これにより、スクリプトの動作中に何か問題が発生した場合でも、その原因を特定しやすくなります。
6. GASの応用
GASの基本的な使い方をマスターしたら、次は応用編です。例えば、以下のような応用が可能です。
メール通知機能の追加: 集計結果をメールで自動送信する。
function sendAggregatedDataByEmail() {
try {
var aggregatedData = aggregateSurveyResults();
if (!aggregatedData) throw new Error("集計データがありません");
var emailBody = "アンケート結果:\n\n";
for (var question in aggregatedData) {
var answers = aggregatedData[question];
emailBody += question + ":\n";
for (var answer in answers) {
emailBody += " " + answer + ": " + answers[answer] + "\n";
}
}
MailApp.sendEmail("recipient@example.com", "アンケート結果", emailBody);
} catch (e) {
Logger.log("Error: " + e.message);
}
}
このスクリプトは、集計結果をメール本文にまとめて送信します。これにより、集計結果を関係者に迅速に共有することができます。
まとめ
以上、GASを活用したアンケート結果の自動集計とスプレッドシートへの反映について説明しました。GASを活用することで、業務の効率を大幅に向上させることができます。特にエラーハンドリングを適切に行うことで、スクリプトの信頼性を高めることができます。また、GASの応用例として、メール通知機能や外部APIとの連携を紹介しました。これにより、さらに高度な自動化が可能となり、業務の効率化に大いに役立つでしょう。この記事が、あなたのビジネスにおけるデータ分析や報告書作成の効率化に役立つことを願っています。
この記事が気に入ったらサポートをしてみませんか?