JavaScript
GoogleAnalytics
GoogleAppsScript
spreadsheet

【Google Apps Script】その22 Google Analyticsのデータを引っ張ってくる

この記事はGoogle Apps Scriptを実例交えて基礎からざっくり学ぶ Advent Calendar 2017 22日目の記事です。

本アドベントカレンダーは@rt_pの個人プロジェクトですが、筆者はAteam Brides Inc. Advent Calendar 2017にも参加しています。そちらでも出張版記事を書いているので、覗いていただけると嬉しいです。

はじめに

Google Analyticsのデータをスプレッドシートで取得してみましょう。

スプレッドシートで扱えるようになると、各種計算もいちいち手動でコピペしなくても済みますし、レポートの自動送付等にも使えそうですね。

result.png

chatwork.png

アドオンを追加する

アドオン→アドオンを取得からGoogle Analyticsを選択します。

addon.png

ga.png

選択すると許可を求められるので許可しましょう。

レポートを作成

Create new reportを選択すると右側にメニューが出現します。
レポート名をデイリーPV、詳細を見たいアカウント、プロパティを選択。
MetricsでPageviews、DimensionsでDateを選択し作成します。

report.png

一旦そのままの設定で実行してみましょう。
デイリーのPVレポートが作成されるはずです。

config.png

Run reportsで、今作ったレポートのコンフィギュレーションに沿ったレポートが実行されます。

run.png

実行結果は以下の通りです。
ちなみにこの数値は私のqiitaアカウントの数値です。

余談ですがqiitaでGA導入は設定→Google Analyticsでとても簡単に設定できるので、アカウントをお持ちの方は是非作ってみてください。

result.png

自動でレポートを生成

アドオン→Google Analytics→Schedule reportsを選択し、 *Enable reports to run automatically. *にチェックを入れます。
以下のように設定すると、夜中に集計されます。

schedule.png

レポートをChatworkに飛ばす

直近7日間のPVレポートを毎日1回Chatworkに飛ばしてみましょう。

スクリプトエディタを開き、以下コードに置き換えて実行します。
スクリプトエディタの開き方や承認が必要ですメッセージが出た際の対処法が分からない場合は
アドベントカレンダー1日目のHello, world!記事をご参照ください。

report_to_chatwork.gs
  var roomId = 'YOUR_ROOM_ID'; // ここに投稿したい部屋のIDを入力
  var token = 'YOUR_TOKEN'; // ここにトークンを入力

function reportToChatwork() {
  Logger.log("a");
  var sheet = SpreadsheetApp.getActive().getSheetByName('デイリーPV');
  var values = sheet.getRange('A16:B22').getValues();
  var currentTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY/MM/dd');
  var subject = currentTime + 'PVレポート';
  var body = '';
  for (var i in values) {
    body += Utilities.formatDate(new Date(values[i][0]), 'Asia/Tokyo', 'YYYY/MM/dd') + ':' + values[i][1] + "\r\n";
  }

  postToChatworkMessage(subject, body); // chatworkに送信  
}

// chatworkにメッセージ投稿
function postToChatworkMessage(subject, body) {
  var body  = '[info][title]' + subject + '[/title]' + body + '[/info]';
  var payload = {
    'body': body
  }
  var headers = {
    'X-ChatWorkToken': token
  }
  var options = {
    'method' : 'POST',
    'payload' : payload,
    'headers' : headers
  }
  var url = 'https://api.chatwork.com/v2/rooms/' + roomId + '/messages';
  UrlFetchApp.fetch(url, options);
}

特に今までと変わったことはしておらず、シートから値を取ってきて整形しChatworkAPIを叩いているだけです。

  var roomId = 'YOUR_ROOM_ID'; // ここに投稿したい部屋のIDを入力
  var token = 'YOUR_TOKEN'; // ここにトークンを入力

roomIdは部屋のIDです。URLの#!ridXXXXXとなっている、rid以降の数値です。
Chatworkトークンの取得方法は16日目の記事を参照してください。

reportToChatwork()を実行すると、以下のようにメッセージが届きます。

chatwork.png

あとはスクリプトエディタのストップウォッチアイコンから定期実行を設定し、毎日8~9時ぐらい?に設定するだけです。

trigger.png

おわりに

毎日GAのページを開き、数字をコピペし、Excelに貼り付ける…という作業をやっている方が多いと思います。
スプレッドシートを使えば自動的にシートに集約するだけでなく、レポートまで自動化が可能なので是非試してみてください。

明日

【Google Apps Script】その23 パスワード管理ツールを作り、一定期間変更していない場合に通知する
となります。
GASを使い、パスワード管理ツールを作ってみたいと思います。

前の記事
【Google Apps Script】その21 指定時刻にメッセージを自動投稿するChatwork botを作る
次の記事
【Google Apps Script】その23 パスワード管理ツールを作る