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を全て取得するような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の状態を取得できる。
- Cloud Loggingのログルーターでフィルタ条件に
resource.type="app_script_function
を指定したシンクを作成 - 新しく作成したPub/Subトピックを転送先に指定
- 指定したPub/SubトピックをトリガーとしてCloud Functionsを作成
- Cloud Functionsでログを解析
この場合、実行毎のログになってしまうためメトリクスとは言えない点には注意が必要。メトリクスが欲しければ自分で集計する必要がある。
各方法の比較
それぞれの方法を比較すると次のようになる。
項目 | 方法1: サービスアカウント | 方法2: ユーザー毎の認証 | 方法3: Cloud Logging |
---|---|---|---|
取得手段 | メトリクスAPIをサービスアカウントで実行 | メトリクスAPIをユーザー同意で実行 | ログを収集し自前で集計 |
Workspace内の網羅性 | 各GASでプロジェクト設定必須 | ユーザーが所属していれば可 | 各GASでプロジェクト設定必須 |
Script Id収集 | 必要 | 必要 | 不要 |
実装の複雑さ | 低 | 中 | 低 |
運用コスト | 低 | 低 | 中(Pub/Sub, Cloud Functions) |
粒度/リアルタイム性 | 日/週次メトリクス | 日/週次メトリクス | 実行毎ログで高頻度 |
主な注意点 | --- | OAuth実装が必要 | メトリクスではなくログ |
方法2の実装
今回は方法2の実装を行った。次のリポジトリでデモの実装を公開している。