この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
吉川@広島です。
Google Analytics (以下GA) の Analytics Reporting API からデータを取得する検証を行ったので共有します。
下記は Python で取得する方法の紹介記事になります。
アナリティクス Reporting API v4を使ってGoogle Analyticsのデータを取得する
本記事では Node.js (TypeScript) を用いて取得していきます。
環境
- macOS Catalina 10.15.7
- Node.js 14.13.0
- TypeScript 4.1.3
- yarn 1.22.0
Analytics Reporting API を使う準備
冒頭紹介の記事と全く同じのため、割愛します。
注意点
私が試した際にハマった点を共有します。
GA プロパティ作成時、 「ユニバーサルアナリティクスプロパティの作成」をオンにする
取得したい GA のデータを指定するにあたり、ビュー のID が必要になります。
プロパティとビューの関係性については下記が参考になります。
ただ、デフォルト設定でプロパティ作成した場合、ビューが存在せずこれを取得することができないようです。
How do I get View ID from Google Analytics 4?
対処法として、プロパティ作成時に「ユニバーサルアナリティクスプロパティの作成」をオンに入れておくと、ビューが存在するプロパティが作成されるようになります。
プロパティ作成時に「詳細オプションを表示」を押下します。
「ユニバーサルアナリティクスプロパティの作成」が出てくるので、トグルスイッチをオンを入れます。
「ウェブサイトのURL」を入力し、「次へ」を押下して作成作業を進めて下さい。
プロパティ作成完了後、「UA-」で始まる ID のプロパティができていますので、これを選択し、「ビューの設定」を押下します。
すると、ビュー ID を確認できました。
GCP で Analytics Reporting API を有効化する
APIの有効化をうっかり飛ばしてしまうと後述のデータ取得処理の実行時に以下のエラーが発生します。
Error: Analytics Reporting API has not been used in project xxxxxxxxxxx before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/analyticsreporting.googleapis.com/overview?project=xxxxxxxxxxx then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
「Analytics Reporting API が未使用か無効」ということがいわれています。
この場合は Analytics Reporting API を有効にする手順を実施しましょう。
Node.js スクリプトを書き、 GA のデータを取得する
Node.js で Analytics Reporting API を利用するには google-api-nodejs-client を使います。
googleapis/google-api-nodejs-client
私はパッケージマネージャに yarn を使っていますので以下のように導入します。
yarn add google-api-nodejs-client
続いて google-api-nodejs-client を使ったスクリプトを書いていきます。
下の記事を参考にさせて頂きました。
Node.js (JavaScript)で Google Analytics Reporting API v4 を使う
import { google } from 'googleapis'
const main = async () => {
const client = await google.auth.getClient({
keyFile: './keys.json', // キー JSON ファイルを配置した場所を指定する
scopes: 'https://www.googleapis.com/auth/analytics.readonly',
})
const analyticsreporting = await google.analyticsreporting({
version: 'v4',
auth: client,
})
const res = await analyticsreporting.reports.batchGet({
requestBody: {
reportRequests: [
{
viewId: 'xxxxxxxxx', // ビュー ID を指定する
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'today',
},
],
metrics: [{ expression: 'ga:pageviews' }],
dimensions: [{ name: 'ga:pagePath' }, { name: 'ga:pageTitle' }],
orderBys: [{ fieldName: 'ga:pageviews', sortOrder: 'DESCENDING' }],
},
],
},
})
console.log(JSON.stringify(res.data))
}
main()
実行すると以下のように取得できました。
{"reports":[{"columnHeader":{"dimensions":["ga:pagePath","ga:pageTitle"],"metricHeader":{"metricHeaderEntries":[{"name":"ga:pageviews","type":"INTEGER"}]}},"data":{...}
以上、参考になれば幸いです。