2012/02/11

Google+アンケート結果をリアルタイムでグラフに反映させる方法♪

GoogleドキュメントにGoogle+への直接共有ボタンが設置され、1つの利用法としてアンケートとしての使い方が注目されています。Googleドキュメントフォームから共有するとオリジナルのスニペット付きで共有されるため、一見してアンケートだとわかるのがイイですね。

集計結果はGoogleのスプレッドシートに反映され結果を共有することもできます。こちらは共有ボタンはありませんが、「Google+」のテキストリンクから共有ボックスを開くことができます。


この集計結果スプレッドシート内に、グラフを設置する機能はあるのですが、後から投稿されるアンケート内容もリアルタイムに反映させることに成功したので、その方法についてまとめておきます。



Googleが無料で用意してくれてる「スプリクトエディタ」を使用

以前は有料アカウントでしかGoogle Apps Scriptは使えなかったのですが、現在は無料アカウントでもメニューから気軽に使えるようになっています。「有料が無料に…」こういうの大好きですw

今回制作したスプリクトの動作

下記アンケートフォームで回答すると…
https://docs.google.com/spreadsheet/viewform?formkey=dGtLcExMS0VDeFAxTG5oZmlndmxMNkE6MQ

下記の集計結果に設置した円グラフに、投票内容がリアルタイムで反映されます♪
https://docs.google.com/spreadsheet/ccc?key=0AtzBCThxsGuhdGtLcExMS0VDeFAxTG5oZmlndmxMNkE


導入手順

1、アンケートフォームや集計結果スプレッドシートの編集を行います。
  (この部分の方法は省略させていただきます)

2、メニューのツールから「スプリクトエディタ」を選択します。
  (新しい投稿行に計算式を自動で挿入するためのスプリクトになります)



3、下記の場所に実行したいスプリクトを書きます。


↓下記が、今回制作したスプリクトのソースになります。
var sitteita_COL = 6;  // 知らなかったの判定式挿入位置
var siranakatta_COL = 7;  // 知っていたの判定式挿入位置
var mitakotoaru_COL = 8;  // 見たことあったの判定式挿入位置
  // 6、7、8、の数字は、列番号F、G、H、の意味になります

function updateCalculation() {
  // 左端のシートを集計シートと定義する
  // 左端のシートのオブジェクトを取得する
  var s_latest = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

  // 左端のシートでデータが書かれている現在の行数(新投稿行)を取得する
  var maxRow = s_latest.getLastRow();
  var maxRowB = s_latest.getLastRow();

  // 知っていたの判定計算式を埋め込む
  s_latest.getRange(maxRow, sitteita_COL).setFormula('=if(B'+maxRowB+'="知らなかった",1,0)');

  // 知らなかったの判定計算式を埋め込む
  s_latest.getRange(maxRow, siranakatta_COL).setFormula('=if(B'+maxRowB+'="知っていた",1,0)');

  // 見たことあるの判定計算式を埋め込む
  s_latest.getRange(maxRow, mitakotoaru_COL).setFormula('=if(B'+maxRowB+'="見たことあった",1,0)'); 
}​

4、メニューにあるトリガーから「現在のスプリクトのトリガー」を選択
  (このスプリクトが実行されるタイミングを指定するためです)



5、EventsのFrom spreadsheet右のプルダウンを「On from submit」にします。
  (アンケート投稿された時に、このスプリクトが動作します)



以上で、リアルタイムに反映されるグラフの完成です。

グラフの種類は、デフォルトでいろいろ用意されており、スプリクトとの組み合わせでイロイロなリアルタイムなグラフ制作ができそうですね。いろいろな利用方法が出てくるのが楽しみですので、ぜひ制作された際にはご報告頂ければ嬉しいです。

この投稿への「+1」などもヨロシクお願いします(^ ^)/♪