このページの本文へ

Googleフォームで作る無料アンケート集計システム (3/4)

2014年05月01日 11時00分更新

文●掌田津耶乃

  • この記事をはてなブックマークに追加
本文印刷

データを集計するには?

 集計結果をビジュアルに表示するだけならば、この公開ページをそのまま利用すればよいでしょう。ただしセミナーの開催者がアンケート結果をデータとして活用することを考えると、生のデータをきちんと集計できたほうが後々役に立ちます。

 アンケートの結果は、Googleスプレッドシートにまとめられますが、選択したラジオボタンやチェックボックスのテキストがずらりと書き出されているだけで、そのままではデータとしてあまり役に立ちません。

アンケート結果のデータを保管するスプレッドシート。選択した項目のテキストが書き出されている

 そこで、結果を集計するスクリプトを作ります。セミナーアンケートのデータが保管されているGoogleスプレッドシートを開き、「ツール」メニューから「スクリプトエディタ...」を選んでスクリプトエディタを起動します。

アンケート結果のスプレッドシートで「スクリプトエディタ...」メニューを選ぶ

 スクリプトエディタを開いたら、上部の「無題のプロジェクト」をクリックし、名前を入力しておきましょう。ここでは「セミナーアンケート(回答)」としておきました。

プロジェクトの名前を入力しておく

スクリプトを作成する

 スクリプトは、リスト2をスクリプトエディタに記述します。デフォルトで書かれているmyFunction関数は削除してもかまいません。

リスト2


function addUpData() {
  var spread = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spread.getSheets()[0];
  var colnum = sheet.getLastColumn();
  var rownum = sheet.getLastRow();
  var sheet2 = spread.insertSheet("アンケート集計");
  var rowcounter = 1;
  for(var i = 2;i <= colnum;i++){
    sheet2.getRange(rowcounter, 1).setValue(sheet.getRange(1, i).getValue());
    sheet2.getRange(rowcounter++, 2).setValue('');
    var startrow = rowcounter;
    var datas = new Object();
    for(var j = 2;j <= rownum;j++){
      var values = sheet.getRange(j, i).getValue().split(',');
      for(var k = 0;k < values.length;k++){
        if (datas[values[k]] == undefined){
          datas[values[k]] = 1;
        } else {
          datas[values[k]]++;
        }
      }
    }
    for(var key in datas){
      sheet2.getRange(rowcounter, 1).setValue(key);
      sheet2.getRange(rowcounter++, 2).setValue(datas[key]);
    }
    var endrow = rowcounter;
    sheet2.getRange(rowcounter, 1).setValue('');
    sheet2.getRange(rowcounter++, 2).setValue('');
    sheet2.getRange(startrow, 1, endrow - startrow, 2).sort({column: 2, ascending: false});
  }
}

 このスクリプトは、シートにあるデータを読んで、新たに「アンケート集計」というシートを作成し、ラジオボタンやチェックボックスの選択肢ごとの回答を集計した結果を書き出します。回答結果が数値化され、データを利用しやすくなります。

スクリプトで作成されるシート。各質問ごとに、回答された選択肢の数をカウントして表示する

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています