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

この記事は[Google Apps Scriptを実例交えて基礎からざっくり学ぶ Advent Calendar 2017](https://qiita.com/advent-calendar/2017/gas_beginner)　22日目の記事です。

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

# はじめに

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

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

![result.png](https://qiita-image-store.s3.amazonaws.com/0/199678/e4ffdbc1-9096-a08f-5a84-24b03d2697ac.png)

![chatwork.png](https://qiita-image-store.s3.amazonaws.com/0/199678/ed1825db-635d-c10b-ee6a-cf268605d6bd.png)

# アドオンを追加する

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

![addon.png](https://qiita-image-store.s3.amazonaws.com/0/199678/f3de4c78-c4c4-a695-eb49-a4a3c3ab3cab.png)

![ga.png](https://qiita-image-store.s3.amazonaws.com/0/199678/e9fdd88a-0ff4-0047-aba0-70b51a848776.png)

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

# レポートを作成

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

![report.png](https://qiita-image-store.s3.amazonaws.com/0/199678/5e290735-ef4f-35a8-4869-4a9bba22dfa1.png)

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

![config.png](https://qiita-image-store.s3.amazonaws.com/0/199678/ef5cb565-6095-2a10-34bb-647b28be6cff.png)

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

![run.png](https://qiita-image-store.s3.amazonaws.com/0/199678/cb0e4ded-898b-8692-4f0a-b78aef850422.png)

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

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

![result.png](https://qiita-image-store.s3.amazonaws.com/0/199678/e4ffdbc1-9096-a08f-5a84-24b03d2697ac.png)

# 自動でレポートを生成

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

![schedule.png](https://qiita-image-store.s3.amazonaws.com/0/199678/0f4876df-9cac-3886-88e4-c0d356e747f9.png)

# レポートをChatworkに飛ばす

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

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

```javascript: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日目の記事](https://qiita.com/rf_p/items/3e20e4114a1182deb7bc)を参照してください。

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

![chatwork.png](https://qiita-image-store.s3.amazonaws.com/0/199678/ed1825db-635d-c10b-ee6a-cf268605d6bd.png)

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

![trigger.png](https://qiita-image-store.s3.amazonaws.com/0/199678/7f3313de-e938-de61-193b-33f71e192d19.png)

# おわりに

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

# 明日

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

前の記事
[【Google Apps Script】その21　指定時刻にメッセージを自動投稿するChatwork botを作る](https://qiita.com/rf_p/items/66108768bbbc61b04168)
次の記事
【Google Apps Script】その23　パスワード管理ツールを作る