Workspace内のGASのメトリクスを定期取得する

Google Apps Script APIを利用することで、GASのメトリクスを取得できる。自分が管理しているGASのメトリクスを取得するだけであればAPIを叩くだけだが、Workspace内のGASのメトリクスを取得する場合は工夫が必要になる。

GASのメトリクスを取得するAPI#

projects.getMetricsでGASのメトリクスを取得することが出来る。

このAPIの利用にはhttps://www.googleapis.com/auth/script.metricsのスコープが必要になる。2025年8月時点で優秀と言われているLLMにコードを書かせると、高確率で誤ったスコープを指定してきたため注意。

次の形式のデータが返ってくる。

{
"activeUsers": [
{
"startTime": "2025-07-30T00:00:00Z",
"endTime": "2025-07-31T00:00:00Z"
},
{
"startTime": "2025-07-31T00:00:00Z",
"endTime": "2025-08-01T00:00:00Z"
}
],
"totalExecutions": [
{
"startTime": "2025-07-30T00:00:00Z",
"endTime": "2025-07-31T00:00:00Z"
},
{
"value": "4",
"startTime": "2025-07-31T00:00:00Z",
"endTime": "2025-08-01T00:00:00Z"
}
],
"failedExecutions": [
{
"startTime": "2025-07-30T00:00:00Z",
"endTime": "2025-07-31T00:00:00Z"
},
{
"value": "4",
"startTime": "2025-07-31T00:00:00Z",
"endTime": "2025-08-01T00:00:00Z"
}
]
}

方法1:サービスアカウントを利用してWorkspace内のGASのメトリクスを取得する#

GoogleのAPIを定期実行する場合、Google CloudでAPIの実行権限を持ったサービスアカウントを作成し、Cloud Schedulerなどで実行するような実装がかなり簡単な方法だと思われる。

しかし、この実装ではサービスアカウントが含まれるプロジェクトに、それぞれのGASを含める必要がある。

プロジェクトの設定はGAS毎に設定から行うことが出来る。この設定の初期値は”デフォルト”であり、これはWorkspace内のアカウントであっても個人に紐づいているため、プロジェクトを設定しない限り個人の権限以外の取得する手段がない。

GASのプロジェクト設定画面

ユーザーにプロジェクトの設定の徹底をお願いできるのであれば最も簡単な手段だと思われるが、既に大量のGASを管理している場合は大変な可能性がある。

またプロジェクトに紐づいたGASを全て取得するようなAPIは存在しないため、ユーザーにGASのScript Idを提供してもらう必要がある。

方法2:ユーザー毎の認証情報を利用してGASのメトリクスを取得する#

ユーザー毎の認証情報を利用できるのであれば、プロジェクトの設定を行う必要がなくなるため、既に大量のGASを管理している場合でも対応可能である。

Script Idを提供してもらう必要があるのは方法1と同様だが、Script Idを提供してもらう画面に認証情報を取得するログイン画面を設けることで、方法1と比較してステップ数は1段削減することが出来る。

またGoogle OAuthでは今回のように高度なスコープを要求する場合は審査が必要になるが、Workspace内のユーザーに限定すれば審査不要で公開できる。

方法3:Cloud Loggingを利用してGASの状態を取得する#

この方法では、Google Apps Script APIを利用しない。またプロジェクトの設定のみしてもらえれば、Script Idを提供してもらう必要がない。

次のような構成で、GASの状態を取得できる。

  1. Cloud Loggingのログルーターでフィルタ条件にresource.type="app_script_functionを指定したシンクを作成
  2. 新しく作成したPub/Subトピックを転送先に指定
  3. 指定したPub/SubトピックをトリガーとしてCloud Functionsを作成
  4. Cloud Functionsでログを解析

この場合、実行毎のログになってしまうためメトリクスとは言えない点には注意が必要。メトリクスが欲しければ自分で集計する必要がある。

各方法の比較#

それぞれの方法を比較すると次のようになる。

項目方法1: サービスアカウント方法2: ユーザー毎の認証方法3: Cloud Logging
取得手段メトリクスAPIをサービスアカウントで実行メトリクスAPIをユーザー同意で実行ログを収集し自前で集計
Workspace内の網羅性各GASでプロジェクト設定必須ユーザーが所属していれば可各GASでプロジェクト設定必須
Script Id収集必要必要不要
実装の複雑さ
運用コスト中(Pub/Sub, Cloud Functions)
粒度/リアルタイム性日/週次メトリクス日/週次メトリクス実行毎ログで高頻度
主な注意点---OAuth実装が必要メトリクスではなくログ

方法2の実装#

今回は方法2の実装を行った。次のリポジトリでデモの実装を公開している。

https://github.com/hrdtbs/gas-metrics-subscription-demo