ブログの閲覧数をGoogleスプレッドシートに毎日自動更新する

ブログ運営

皆さん、こんにちは!

ブログを開設してまだ3ヶ月ほどで、毎日閲覧数が気になってついついGoogleアナリティクスを見てしまいます。

ただ、少し複雑で見辛かったのと閲覧数だけが見たかったので、Googleスプレッドシートで自動で取得できないかなーってぼんやり考えていました。そこで、いろいろ調べた結果、Gas(Google Apps Scripts)を使えばそれが実現可能であることがわかり、やってみました!

その後プログラミングなしでもできる方法があったので以下の記事で紹介しております。

Gasはプログラム言語がJavaScriptです。JavaScriptは少しかじっただけでしたが、なんとかできました。イメージとしては以下のような感じです。これが毎日自動で更新されます。(PV数しか見ていませんがww)

1.Gasを開く

Googleのメニュー一覧からドライブまたは直接スプレッドシートをクリックします。

Googleドライブを開いたら「+新規」かファイルを作成したい場所で右クリックしてGoogleスプレッドシートをクリックします。

スプレッドシートが開いたら「ツール」→「スクリプト エディタ」をクリックします。

2.APIを有効にする

以下のような画面が表示されるので「サービス」の+をクリックします。

続いて、たくさん選択肢が出てきますが、少しスクロールしたところに「Google Analytics API」があるのでそれをクリックして、「追加」を押します。

そうすると10秒かからないくらいで追加されて、「サービス」の下に表示されます。これでAPIの有効化がされたことになります。

3.コードを入力

続いてコードを入力します。Gasは言語がJavascriptです。使うコードはこちらです。黄色ハイライト部分は入力が必要な箇所です。一旦以下のコードをペタッとコピペします。

// Analytics
function getAnalytics() {

  //-------日時データの取得-----------
  // 昨日の日付を取得する
  var date = new Date();
  date.setDate(date.getDate() - 1);

  //年度を取得する
  var year = date.getFullYear();

  //曜日を取得する
  var ary = ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'];
  var weekDayNum = date.getDay();//曜日番号の取得
  var weekDay = ary[weekDayNum] ;

  //-------GAデータ-----------
  // GAからデータを取得する関数の定義
  function getGaData(startDate, endDate) {
    var gaData = Analytics.Data.Ga.get(
      'ga:XXXXXXXXX', //アナリティクスで使っているID名を記載
      startDate,
      endDate,
      'ga:pageviews, ga:sessions, ga:users, ga:newUsers,ga:bounceRate,ga:exitRate,ga:avgSessionDuration,ga:pageviewsPerSession, ga:totalEvents').rows;
      return gaData;
      }

  // 戻り値(指定期間)を指定し、関数を実効
  var gaData = getGaData('yesterday', 'yesterday');

  //-------スプレッドシートへの書き込み-----------
  // 書き込むシートを選択する
  var ss = SpreadsheetApp.openById('XXXXXXXXXXXX');
  var sheet = ss.getSheetByName('XX');

  //最終行+1行目の取得
  var lastRow = sheet.getLastRow()+1;
  //最終行+1行目を追加
  sheet.insertRows(lastRow);

  //追加した行に書き込む
  sheet.getRange(lastRow, 1).setValue(year);
  sheet.getRange(lastRow, 2).setValue(date);
  sheet.getRange(lastRow, 3).setValue(weekDay);
  sheet.getRange(lastRow, 4).setValue(gaData[0][0]);
  sheet.getRange(lastRow, 5).setValue(gaData[0][1]);
  sheet.getRange(lastRow, 6).setValue(gaData[0][2]);
  sheet.getRange(lastRow, 7).setValue(gaData[0][3]);
  sheet.getRange(lastRow, 8).setValue(gaData[0][4] + "%\n");
  sheet.getRange(lastRow, 9).setValue(gaData[0][5] + "%\n");
  sheet.getRange(lastRow, 10).setValue(gaData[0][6]/60);
  sheet.getRange(lastRow, 11).setValue(gaData[0][7]);
  sheet.getRange(lastRow, 12).setValue(gaData[0][8]);

  //-----セルのフォーマット指定-------
  //日時データのフォーマット
  var FormatDate = sheet.getRange("B:B").setNumberFormat("MM/DD");
  //直帰率
  //var FormatBounceRate = sheet.getRange("H:H").setNumberFormat("0.00%");
  //滞在時間
  var FormatDuration = sheet.getRange("J:J").setNumberFormat("#,##00.00");
  //ページ/セッション
  var FormatPageSession = sheet.getRange("K:K").setNumberFormat("#,##0.000");
}

入力が必要な箇所が3つあります。

①アナリティクスのID

‘ga:XXXXXXXXX‘, //アナリティクスで使っているID名を記載

 

このIDはGoogle アナリティクスのホーム画面で「すべてのウェブサイトのデータ」をクリックして

切り替わった画面のここに表示されているIDです。これをコード内の XXXXXXXXXにコピペします。

②スプレッドシートのID

//——-スプレッドシートへの書き込み———–
// 書き込むシートを選択する
var ss = SpreadsheetApp.openById(‘XXXXXXXXXXXX‘);

 

続いてスプレッドシートのIDを入力します。先ほど開いたスプレッドシートのURLの一部です。以下の部分です。これを上記XXXXXXXXXXXXの部分に貼り付けます。

https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=0

③シート名

var sheet = ss.getSheetByName(‘XX‘);

シート名はその名の通りシート名を入力します。

4.実行する

このフロッピーディスクのようなマークをクリックして保存します。

保存すると「デバッグ」の右側の部分が「getAnalytics」に変わったと思います。それが選択されているのを確認して「実行」をクリックします。

これで終わりと思いきや、ややこしそうな画面がいくつか出てきます。ただ、下記の通りにクリックしていけば大丈夫です。

まずはこの画面が出ます。「権限を確認」をクリックします。

そしてGoogleアカウントを選択して次にこのような画面が出てきます。こちらはGasでコードを書いて初めてそのfunctionを実行するときに毎回出ますので焦らなくて大丈夫です。「詳細」をクリックします。

続いて「サンプル(安全ではないページ)に移動」をクリックします。

そして以下の画面でGasにスプレッドシートをいじること及びアナリティクスのデータ抽出させることなどの許可を与えます。自身でそれを確認して「許可」をクリックします。

「許可」をクリックするとプログラムが実行され、スプレッドシートに数字が入力されます。このように下部の実行ログのところに「実行完了」と表示され、スプレッドシートに数字が書き込まれていたら完了です。

先にヘッダーを入力しておけば良かったですが、上に行を追加して以下のようにヘッダーを記入します。

5.定期実行の設定

左側の時計マーク(トリガー)をクリックします。

右下の「トリガーを追加」をクリックします。

そして以下のように設定します。時刻は好きな時間で問題ありません。これで自動で毎日定期実行してくれます。

以上です。

ご不明点やエラーが発生しましたらお問い合わせください。

コメント

タイトルとURLをコピーしました