【GAS/GCP】GAS で Google Analytics Data API を使用する方法

# 手順
## Google Analytics Data API の有効化
### 手順1
[Google Cloud](https://console.cloud.google.com/) で左上の「**メニュー**」から「**API とサービス**＞**ライブラリ**」を選択する。
（事前に[こちら](https://cloud.google.com/resource-manager/docs/creating-managing-projects?hl=ja)を参考にして Google Cloud のプロジェクトを作成しておく必要がある）

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/ce52e4a5-dd86-e824-d963-1004bb271ee5.png">

### 手順2
「**Google Analytics Data API**」を探して「**有効にする**」を押す。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/d51babd7-0fdc-45bf-a37d-bb7fa54e725e.png">

### 手順3
必要に応じて「**認証情報**＞**認証情報を作成**」から認証情報を作成する。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/556e103f-71a9-47f2-e41e-1622d18e0722.png">

### 手順4
必要に応じて「**認証情報**＞**同意画面を構成**」から **OAuth 同意画面**を構成する。
（OAuth 同意画面を構成する際は必ずテストユーザーを1人以上追加する）

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/6940552c-6e6c-fc22-5b5a-36fd32afc1e1.png">

（引用元：[Google APIを有効にし、クライアントファイルをダウンロードする。](https://knowledge.bizrobo.com/hc/ja/articles/6859071642777
)）
## Google Apps Script との連携 
### 手順5
左上の「**メニュー**」から「**Cloud の概要**＞**ダッシュボード**」を選択する。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/d45e58fe-c166-adfc-9b50-b748e4204834.png">

### 手順6
「**プロジェクト情報**」の「**プロジェクト番号**」をコピーする。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/d05aa588-8375-2c92-c655-e54693f84a72.png">


### 手順7
任意の Google Apps Script プロジェクトを開き、左の「**プロジェクトの設定**」から「**Google Cloud Platform（GCP）プロジェクト**＞**プロジェクトを変更**」を押す。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/6901f30a-89b5-99b1-5553-65002726825c.png">

### 手順8
「手順6」でコピーした**プロジェクト番号**を「**GCP のプロジェクト番号**」にペーストして「**プロジェクトを設定**」を押す。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/ad59853e-f5ae-3ef7-dafa-8a625eb2d3fc.png">

### 手順9
**エディタ**に戻り、「**サービス**」の右の「**＋**」から「**Google Analytics Data API**」を選択して右下の「**追加**」を押す。

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/985f5a2c-7554-2bc6-fa9f-7b92aaecbfbf.png">

## Google Apps Script での Google Analytics Data API の使用
### 手順10
[Google Analytics](https://analytics.google.com/analytics/web/) に行き、左下の「**管理**」から「**プロパティ**＞**プロパティの詳細**」で「**プロパティID**」をコピーする。
（事前に Google Analytics の**アカウント**と**プロパティ**を作成しておく必要がある）

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/ece3fc85-c47f-4d34-e899-2b875ccf5f31.png">

### 手順11
下記のコードを記述して OAuth 同意画面で追加したテストユーザーでこのプログラムを実行する。

```js:Sample.gs
//PV数を取得する
function getPageViews()
{
  let metric = AnalyticsData.newMetric();

  metric.name = "screenPageViews";

  let dimension = AnalyticsData.newDimension();

  dimension.name = "date";//PV数を日付ごとに分ける

  let dateRange = AnalyticsData.newDateRange();

  dateRange.startDate = "2024-01-01";//計測開始日

  dateRange.endDate = "today";//計測終了日

  let request = AnalyticsData.newRunReportRequest();

  request.dimensions = [dimension];

  request.metrics = [metric];

  request.dateRanges = dateRange;

  const RESPONSE = JSON.parse(AnalyticsData.Properties.runReport(request, "properties/{プロパティID}").toString());

  let pageViews = 0;

  for(let i = 0; i < RESPONSE.rows.length; i++)
  {
    pageViews += parseInt(RESPONSE.rows[i].metricValues[0].value);
  }

  Logger.log(pageViews);

  return pageViews;
}
```
### 手順12
権限を承認後、**実行ログ**に PV 数が正確に表示される事を確認する。
（「**User does not have sufficient permissions for this property.**」と表示された場合は [Google Analytics](https://analytics.google.com/analytics/web/) の左下の「**管理**」から「**プロパティ**＞**プロパティのアクセス管理**」に行き、右上の「**＋**」から**プロパティ**への「**閲覧者**」以上のアクセス権を持つユーザーを追加してそのユーザーでプログラムを実行する）

<img width="500" alt="TSUBASAMUSU.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/103cdf82-09ca-ba36-2c88-7419162e93b6.png">

# その他
## 参考記事
https://www.ebis.ne.jp/column/ga4-api/

https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/web-js?hl=ja

https://developers.google.com/apps-script/advanced/analyticsdata?hl=ja

https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema?hl=ja

https://developers.google.com/analytics/devguides/reporting/data/v1/rest?hl=ja

https://cloud.google.com/resource-manager/docs/creating-managing-projects?hl=ja

https://teratail.com/questions/qejycrwrvjvgyk

# 最後に
## 株式会社ModelingXについて
<img width="200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670397/4261f1c0-a380-01a9-9c69-08a836c6f02f.jpeg">

富山県を拠点とするスタートアップ企業、ModelingXは、2022年4月に創業し、「テクノロジーで感動体験を提供する」というミッションを掲げています。当社が開発中の暮らし体験メタバース「MELIFE（ミライフ）」は、バーチャル住宅展示場や銀行相談、家具購入、婚活などができる「地域単位の新たな経済圏」を目指しています。

↓サービスサイトはこちらから↓

https://melife.io/

ModelingXはリモートワーク＆フレックスタイム制を完備。
UnityやUEを共に探求する仲間を全国から募集しています。

↓企業詳細はこちら↓

https://modelingx.jp/