ウェブ解析

GA4、ユニバーサル アナリティクス

Google Apps Script スプレッド シート

GAS ( Google Apps Script ) で Google アナリティクス の指標を取得、 スプレッド シート に記録する

投稿日:2021年6月28日 更新日:

Google Apps Script ( 以下、GAS ) はGoogleのサービスと連携しやすい特徴があり、Google アナリティクスのアクセス解析データを簡単に取得できます。

なお、下記で作成したスクリプトをスプレッドシートから実行する方法については、こちらに記事が参考になります。

GASで Google アナリティクスのデータを取得し、スプレッドシートに記録する手順を解説します。

アドオンもいいが、GASは自由度が高い

Google アナリティクスのデータをスプレッドシートで取得する場合に、最初に候補となるのが、スプレッドシートのGoogle アナリティクスのアドオンです。

Google アナリティクスのアドオンをインストールすると、スプレッドシートにアナリティクスデータが出力されます。

アドオンはGoogle アナリティクスのAPIをリクエストしてデータを取得しています。

GASを利用すれば、Google アナリティクス APIにリクエストしてアクセス解析のデータを取得できます。

さらに、GASのスクリプトの中でデータの整形処理やグラフ生成なども処理に組み込むことができます。

GAS × Google アナリティクスによって、アドオン以上に便利で、自動のウェブ解析レポートをスプレッドシートに出力可能です。

Google アナリティクス API Metricsの一覧

Metricの一覧はこちらにあります。

Google > アナリティクス > レポート > Core Reporting API

https://developers.google.com/analytics/devguides/reporting/core/v3/segments

Google アナリティクスで取得したいサイトのビューIDを確認

まず、Google アナリティクスから取得したいアクセス解析対象のサイトのビューIDを確認する必要があります。

スプレッドシートからGAS スクリプト エディタを開く

「スプレッドシートを作成してGASを実行するGoogleアカウント」は、「データ取得対象のGoogle アナリティクスの『ビュー』にアクセス可能なGoogleアカウント」と同じアカウントでなければなりません。

GASを実行する時に必要になる情報「ビューID」「開始日」「終了日」、
レポート作成時の表の見出し部分(上記の例では「ページタイトル」「ページビュー数」「セッション数」「ユーザー数」)をシートに書き込んでおきます。

「ビューID」を記述する際には前段で取得した番号の前に「ga:」と付ける必要があります。

次に、GoogleスプレッドシートからGASのスクリプトエディタを開きます。

「現在、ファイルを開くことができません。」と表示されることがあります

スプレッドシートからスクリプト エディタを開こうとすると、「現在、ファイルを開くことができません。」と表示されることがあります。こうなってしまうと、GASを使うことができません。

これは、複数のGoogle アカウントを利用している人に起こる現象で、デフォルトのGoogle アカウントでしかスクリプトエディタを開けないようになっている状態です。

Googleドライブを開いた時の右上に出る自分のアイコンをクリックするとウィンドウが出ますので、一番下にある「すべてのアカウントからログアウト」を押して一度全部ログアウトします。その後で、今の作業で使いたいアカウントでログインし直します。

Google アナリティクスのデータをGASで取得する(1) Google Analytics APIを有効化

最初に、スクリプトエディタでGoogle AnalyticsのAPIを有効化して、Google アナリティクスのデータにアクセスできるようにします。

1.GASのスクリプト エディタの左メニューにある「サービス」の右の+の「サービスを追加」をクリックします。

「サービスの追加」画面でスクロールして、「Google Analytics API」を選択し、追加ボタンをクリックします。

上記が、「Google Analytics API」が追加された状態です。

Google Apps Scriptのコードを記述

function getGoogleAnalytics() {

//コンテナバインドスクリプトに紐づくスプレッドシートのアクティブシートを取得
let sheet = SpreadsheetApp.getActiveSheet();

//スプレッドシートからグーグルアナリティクスのビューIDと開始日、終了日を取得する
//セルを範囲で取得する
//getRange(row, column [, numrows [, numcolumns]])
//row [int]	指定する範囲の行番号。
//column [int]	指定する範囲の列番号。A列を1とする。
//numrows [int]	(省略可)範囲の行数を指定する。デフォルト1。
//numcolumns [int]	(省略可) 列数を指定する。デフォルト1。
let setting = sheet.getRange(2, 1, 1, 3).getDisplayValues();

//グーグルアナリティクスから取得する指標データを設定する
let metrics = "ga:pageviews,ga:sessions,ga:users";

//グーグルアナリティクスのディメンションで「参照元/メディア」を設定する
let dimensions = "ga:sourceMedium";

//表示順はページビュー順にソートする
let sortType = "-ga:pageviews";

//Google Analytics APIリクエストして、グーグルアナリティクスのデータを取得する
//順番に取得する ⇒ let metrics = "ga:pageviews,ga:sessions,ga:users";
let gaData = Analytics.Data.Ga.get(
setting[0][0],
setting[0][1],
setting[0][2],
metrics,
{
'dimensions': dimensions,
'sort': sortType
}
).getRows();

//Google Analytics APIから取得した2次元配列のデータをスプレッドシートに書き込む
//4行目、1列目から書き出す
sheet.getRange(4, 1, gaData.length, gaData[0].length).setValues(gaData);
}

実行したい関数(今回は「getGoogleAnalytics」)であることを確認し、「実行」ボタンをクリックします。

スクリプトを最初に実行する時は、権限の確認が必要となります。

上記の画面が表示されたら「詳細」をクリックします。

「(安全ではないページ)に移動」をクリック。

「許可」をクリック。

もう一度、「実行」します。

実行ログ
22:36:01 エラー myFunction を実行しようとしましたが、削除されました。

と、エラーメッセージが出ました。

もう一度「実行」します。

「警告このプロジェクトを実行するには、ご利用の Google アカウントへのアクアセスを許可する必要があります。再試行して、許可してください。」

との警告がでるので、もう一度「実行」。

「承認が必要です」というウィンドウが表示されるので、右下にある「権限を確認」ボタンをクリックします。

「アカウントの選択」でGASスクリプトを実行するGoogleアカウントを選択します。

「許可」します。

実行されると、上記のように表示されます。

数値が取得できました。

-Google Apps Script, スプレッド シート

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Google Apps Script で Google Analytics API を活用 複雑な segment と filter との同時利用

Google アナリティクス のセグメントで、下記のように、4つのページを全て閲覧した、というセグメントを作ろうとしました。 このセグメントを使って、Google アナリティクスでレポートを見るのは、 …

setNumberFormat (GAS)

var FormatDuration = sheet.getRange(9, 15, gaData_02_05.length, gaData_02_05[0].length).setNumbe …

GAS ( Google Apps Script ) で Google アナリティクス の指標を取得、 スプレッド シート に記録する (2)

GASサンプル 下記では、 let metrics01 = “ga:sessions”; //セッション数let metrics02 = “ga:users&#82 …