見出し画像

【10分で学べる】Googleフォームの回答を個別のシートに集計する方法

「Googleフォームで回答がグラフになるけど生データが欲しいんだよな」
「Googleフォームの回答結果を自動で集計して分析したい」
「非エンジニアにもできる方法が知りたい!」

本記事ではこのような方を対象に、GAS(Google App Script)を使ってGoogleフォームの回答を個別のシートに集計する方法をご紹介します。

■本記事で分かること
GASを使ってGoogleフォームの回答を個別のシートに集計する方法

■本記事の信頼性
私は、本業でChatGPTなどのAIツールを活用して効率化を実現し、ほぼ毎日定時で帰宅。家族との充実した時間を確保している「なおき」といいます。

AIと全く無縁の体育系で文系出身(数学Ⅱで終わりました)の私でもできる時短術をわかりやすく説明できるよう、Xなどを活用して情報発信しています。

また、note開始3か月で総閲覧回数は約5000回
約5ケタ/月に至る記事の購入をいただきました!

これからも皆様のお役に立てる記事を配信していくのでよろしくお願いします!

この記事を読んでくださった方々が1分でも早く帰れることを願い、今回はGASを使ってGoogleフォームの回答を個別のシートに集計する方法をご紹介します!

1.Googleフォームの準備

まずは、Googleフォームで調査したいアンケート項目などを設定します。

ステップ1:Googleフォームの質問項目を設定

ご自身のアカウントでGoogleフォームの画面を表示してください。

フォームが表示できたら、フォームの質問などを作成していきます。

質問項目を追加したい場合はフォームの右側に表示される「⊕」をクリックして追加してください。

質問を追加

今回は簡単に「回答の自動集計」という名前のフォームを作成し、セミナー参加後のアンケートを取るようなものにしてみましょう!

回答者に入力してもらう項目として以下の内容を入れてみました。

【今回入れたアンケート内容の一例】

  1. メールアドレス(記述式)必須質問

  2. セミナーの満足度(5点スケールで評価)必須質問

  3. 最も役に立つと思う内容は?(選択式質問)必須質問

  4. 改善点や追加してほしい内容(自由回答の記述式)

  5. またセミナーに参加したいですか?(はい/いいえ)

ステップ2:Googleフォームの回答をスプレッドシートで表示

次に、Googleフォームの「回答」タブをクリックし、回答結果をスプレッドシートで表示できるようにします。

赤枠内をクリック

「スプレッドシートで表示」をクリックすると
A列の左からタイムスタンプ、メールアドレスに続いて、先ほど設定したアンケート項目がスプレッドシートが表示されました。

スプレッドシートの状況

とりあえず、ここまででGoogleフォームの設定はおしまいです。

2.GAS(Google App Script)の設定

それでは次にGASの設定に入っていきます。

ステップ1:Apps Scriptを開く

先ほど表示したGoogleスプレッドシートのメニューバーから
「拡張機能」→「Apps Script」を選択します。

ステップ2:コードの入力

Apps Scriptが開いたら、デフォルトで入力されている部分のコードを削除してください。

同じところに以下のコードをコピペします。

function autoSummarize() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("フォームの回答 1");
  var data = sheet.getDataRange().getValues();
  
  // 各質問の列番号(0から始まるインデックス)
  var questionIndices = {
    email: 1, // メールアドレス
    satisfaction: 2, // セミナーの満足度
    mostUsefulContent: 3, // 最も役に立つと思う内容
    improvement: 4, // 改善点や追加してほしい内容
    repeatAttendance: 5 // またセミナーに参加したいか
  };

  var questionDescriptions = {
    email: "メールアドレス",
    satisfaction: "セミナーの満足度 (1-5)",
    mostUsefulContent: "最も役に立った内容",
    improvement: "改善点や追加してほしい内容",
    repeatAttendance: "再参加希望 (はい/いいえ)"
  };

  // 質問ごとに異なるシートに出力
  var summaries = Object.keys(questionIndices).reduce(function(acc, key) {
    acc[key] = {};
    return acc;
  }, {});

  data.forEach(function(row, index) {
    if (index === 0) return; // ヘッダー行はスキップ
    for (var key in questionIndices) {
      var answer = row[questionIndices[key]];
      var summary = summaries[key];
      if (summary[answer]) {
        summary[answer]++;
      } else {
        summary[answer] = 1;
      }
    }
  });

  // 各質問の集計結果をそれぞれのシートに出力
  for (var key in summaries) {
    var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(key) || 
                      SpreadsheetApp.getActiveSpreadsheet().insertSheet(key);
    outputSheet.clear(); // 既存のデータをクリア
    var summary = summaries[key];
    outputSheet.getRange("A1").setValue(questionDescriptions[key]);
    outputSheet.getRange("B1").setValue("回答数");
    var rowIndex = 2;
    for (var answer in summary) {
      outputSheet.getRange(rowIndex, 1).setValue(answer);
      outputSheet.getRange(rowIndex, 2).setValue(summary[answer]);
      rowIndex++;
    }
  }
}

// トリガー設定は元のスクリプトと同様
function createTrigger() {
  ScriptApp.newTrigger('autoSummarize')
    .forSpreadsheet(SpreadsheetApp.getActive())
    .onFormSubmit()
    .create();
}

このコードは、Googleフォームに回答があった場合、質問ごとにシートを作成し、回答結果を自動で集計してくれるコードです。

細かい機能は以下の通りです。

1.質問ごとのシート作成
各質問ごとに独立したシートで回答を集計し、シートが存在しない場合は新たに作成します。
この時、各シートの最初の行に質問内容と回答数というラベルをヘッダーに表示して、何の集計結果かが分かるように表示してくれます。

2.自動集計
各回答に対して数を数え、シートに質問内容、回答とその回数を記録します。

ちなみに、アンケート内容に応じてカスタマイズする場合は以下の部分を変更してください。

【質問内容とスプレッドシート内の列番号の位置を変えたい場合】
例えば「email: 1, // メールアドレス」は
「emailがスプレッドシートの2列目、ヘッダーにメールアドレスと記載がある状態」という感じになってます。

  // 各質問の列番号(0から始まるインデックス)
  var questionIndices = {
    email: 1, // メールアドレス
    satisfaction: 2, // セミナーの満足度
    mostUsefulContent: 3, // 最も役に立つと思う内容
    improvement: 4, // 改善点や追加してほしい内容
    repeatAttendance: 5 // またセミナーに参加したいか
  };

【集計結果を示すシート名とシート内の説明を変更する場合】
例えば、「satisfaction: "セミナーの満足度 (1-5)",」の部分は「satisfactionというシートを作って、ヘッダーにセミナーの満足度 (1-5)と入力」するようになっています。

  var questionDescriptions = {
    email: "メールアドレス",
    satisfaction: "セミナーの満足度 (1-5)",
    mostUsefulContent: "最も役に立った内容",
    improvement: "改善点や追加してほしい内容",
    repeatAttendance: "再参加希望 (はい/いいえ)"
  };

入力後の画面はこんな感じです👇

入力後の画面

コピペ後は必ず保存マーク💾を押してください。

この時、「▶️実行」ボタンを押すと権限の承認が求められるので、以下の手順に沿って先に権限を承認しておいてください。

権限を承認
アカウントをクリック
詳細をクリック
安全ではないページをクリック
許可をクリック

以上で権限の承認は終了です。

ステップ3:トリガーの設定

次に、Googleフォームに回答があった場合にメールを返信させるためのトリガーを設定します。

Apps Scriptの左側メニューにある「⏱マーク」をクリックしてください。

トリガー画面が表示されますので、右下の「トリガーを追加」をクリック

赤枠内をクリック

トリガー設定画面で以下の通り設定します。

  • 実行する関数を選択: autoSummarize

  • 実行するデプロイを選択: Head

  • イベントのソースを選択: スプレッドシートから

  • イベントの種類を選択: フォーム送信時

  • 保存

トリガー設定を初めてした際は権限の承認が求められるので、アカウント名をクリックして以下の手順で承認してください。

Advancedをクリック
Go to~~(unsafe)をクリック
Allowをクリック

以上でトリガー設定完了です。

これで、GASの設定は終わりです。
いよいよGoogleフォームをテスト送信してみましょう!

3.Googleフォームの送信と自動集計

最初に作成したGoogleフォームに戻り、画面右上にある「送信」ボタンをクリックしてください。

送信ボタンをクリック

とりあえずテストでメールの欄にご自身のメールアドレスを入力し、送信してください。

この際、「フォームをメールに含める」にチェックを入れると、メールそのものがフォームになるので便利です。

送信すると、Googleフォームのアンケートメールが届きました。

メールに従ってアンケートに回答し、送信をクリック

いくつか送信すると、Googleフォームの回答タブの中にも回答結果が集計され、グラフになって表示されます。

Googleフォーム上の集計結果

しかし、このままだと生データ(数字)が取れないので個別に結果を確認するしかできません。

スプレッドシートの方はどうでしょうか?

スプレッドシート上の集計状況

回答結果がアンケート内容に沿って出力されています。
赤枠内を見ると分かる通り、個別の質問内容ごとにシートが作成されていますね!

例えば、satisfactionのシートを開いてみると👇

satisfactionの集計結果

個別の質問内容ごとに自動で数が集計されています!!

これで、それぞれのデータをグラフ化したり、統合して分析するための基礎データを扱えるようになりました。

以上で作業は終わりです。
お疲れ様でした!

4.まとめ

今回は、「GASを使ってGoogleフォームの回答を個別のシートに集計する方法」をテーマに紹介しましたが、いかがだったでしょうか?

  1. Googleフォームの準備

  2. スプレッドシートとの連携

  3. GAS(Google App Script)の入力とトリガー設定

  4. Googleフォームの実行

上記の内容が実行できれば、Googleフォームの回答を個別のシートに集計することができます!

実際、スプレッドシートとの連携まではGoogleフォームのデフォルト設定ですし、回答結果もGoogleフォームで視覚化できるようになりますので、個別の結果を細かく分析する必要がなければここまでしなくても大丈夫です。

しかし、大量のアンケート結果について、データ間の分析をしたい場合などには個々のデータ内容を個別に集計する必要があります。

こんな時に、今回紹介した方法を活用いただければ、より簡単かつ迅速に分析に入れるのではないでしょうか??

ちなみに個別の集計だけでなく集計結果をそのままグラフにしたりすることもできます。

集計結果をグラフ化した状況

このように、ご自身の好みに合わせたカスタマイズができれば、かなり効率的な作業につなげることができるので、是非実践してみて下さい!

「自分でカスタマイズする方法が分からない…」
「そもそもGASコードなんて読めへんわ!」
「簡単にできる方法を教えて!」

そんな方のために、自分に合ったGASコードを作成するためのChatGPTプロンプト集を作成しました!

上記のプロンプト集では約20個の実用的なプロンプトを精選しております。

このプロンプトの構造を真似すれば、先ほどの集計結果のグラフ化も1分かからずにできるようになりますので、是非ご覧ください!

今回紹介した内容で皆さんの業務が少しでも効率化できれば、スキ、SNSでの紹介をしていただけると大変励みになりますので、何卒よろしくお願いします!

このほか、AI×時短術の知識をX(旧Twitter)で紹介していますので、是非フォローしてください!


この記事が気に入ったらサポートをしてみませんか?