記事

Google Apps Script:Firebase App Distribution APIとの高速連携方法|効率的なGoogle APIs統合

Google Apps Scriptを活用し、Firebase App Distribution APIとの連携で開発効率を大幅向上。API統合の課題を解決し、スムーズなアプリ配布を実現する具体的手法を解説。

Google Apps Script:Firebase App Distribution APIとの高速連携方法|効率的なGoogle APIs統合

本記事は AI による翻訳をもとに作成されています。表現が不自然な箇所がありましたら、ぜひコメントでお知らせください。

記事一覧


Google Apps Script x Google APIs 迅速な連携方法

Google Apps Script と Firebase App Distribution API の連携例として

背景

以前、Google Apps Script を使った記事をいくつか書きました。その中で「Google Apps Script を使って毎日のデータレポートを RPA 自動化する方法」や「簡単3ステップ — 無料で GA4 自動データ通知ロボットを作る」では、Google Apps Script を使って Google Analytics と Google Sheet、Web App、Slack、Telegram を連携し、視覚化データプラットフォームや通知サービスを素早く構築する方法を紹介しました。また、先月公開した記事「Google Apps Script Web App フォームで Github Action CI/CD ワークを連携する」では、Google Apps Script Web App を使って Github API と連携し、CI/CD の GUI フォームサービスを実現しています。これらはすべて Google Apps Script の内蔵サービスを使った連携や、Slack や Github などの外部サービスとの直接連携であり、Google APIs を使った連携はありませんでした。

今回、CI/CDのGUIフォームを最適化する際に、内測版をパッケージ化した後にWebアプリ上でFirebase Distributionのダウンロードリンクを直接表示したいと考えました。これを実現するにはGoogle APIsの連携が必要です。

Google Apps Script x Firebase App Distribution API v1

上図のように、従来の Google Analytics の内蔵サービス「AnalyticsData」とは異なり、Firebase App Distribution は内蔵の接続サービスを提供していないため、進階的な方法で接続する必要があります。

もともとは Service Account を使って Access Token の生成や交換を自分で行う必要があると思っていた(少し面倒で、以前の評価ロボットのオープンソースプロジェクトを参照)が、実はそれほど面倒ではない。

Google Apps Script x Google APIs 高度なサービス連携

接続設定

参考 公式ドキュメントの説明 に従い、以下の手順で詳細設定を行う必要があります。

  1. コマンドスクリプトプロジェクトで 高度なサービスを有効化 する必要があります。

  2. スクリプトで使用している Cloud Platform (GCP) プロジェクト に、対応する高度なサービスの API が有効になっていることを確認してください。

  3. もしスクリプトプロジェクトが2019年4月8日以降に作成されたデフォルトGCPプロジェクトを使用している場合、詳細サービスを有効化してスクリプトプロジェクトを保存すると、APIは自動的に有効になります。まだ同意していない場合は、システムからGoogle CloudおよびGoogle APIの利用規約への同意を求められることがあります。

  4. もしスクリプトプロジェクトが標準 GCP プロジェクト または古いデフォルトの GCP プロジェクトを使用している場合、GCP プロジェクト内で対応する API を有効化する必要があります。この変更を行うには、GCP プロジェクトの編集権限が必要です。

1. プロジェクト設定 — 関連する Google Cloud Platform (GCP) プロジェクトの設定

Google Apps Script x Google APIs の高度なサービス連携では、GCP プロジェクトを作成し、Google Apps Script に関連付ける必要があります。Google APIs の使用権限は GCP の設定に基づきます。

したがって、GCP プロジェクト(Firebase の GCP プロジェクトでも可)を作成し、情報ページの「プロジェクト番号」を控え、この GCP プロジェクトで使用したい Google APIs が有効になっていること、そして現在ログインしているアカウントまたは使用するアカウントがその GCP プロジェクトと Google APIs の権限を持っていることを確認してください。

本記事では「 Firebase App Distribution API 」を例にしています。

プロジェクト番号 を Google Apps Script プロジェクト設定の下にある Google Cloud Platform プロジェクト番号欄に入力すると、現在ログインしているアカウントにその GCP プロジェクトの権限があれば、自動的に紐付けが成功します。

2. プロジェクト設定 — エディタで「appsscript.json」マニフェストファイルを表示する

有効化後、エディタに戻るとファイルリストに「appsscript.json」設定ファイルが表示されます:

oauthScopes に以下の2つの記述が含まれていることを確認してください:

1
2
3
4
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/cloud-platform"
  ]

もし保存されていなければ、手動で貼り付けてください。

3. 接続コードの作成

GCP プロジェクトを設定したら、すぐに連携コードの作成を開始できます。連携したい Google APIs の公式ドキュメントを直接参照してください。 Firebase App Distribution API v1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const project = "projects/[Firebase Project ID]/apps/[Firebase APP ID]"; // あなたの Project ID と App ID に置き換えてください

function debug() {
  const releases = firebaseDistribution("");

  releases.forEach(function(release) {
    // Release オブジェクト: https://firebase.google.com/docs/reference/app-distribution/rest/v1/projects.apps.releases?hl=zh-tw#Release
    Logger.log(`${release.name} ダウンロード URL: ${release.testingUri}`);
  });
}

function firebaseDistribution(releaseNote) {
  const url = "https://firebaseappdistribution.googleapis.com/v1/"+project+"/releases?filter=releaseNotes.text%3D*"+releaseNote+"*";
  // フィルター: https://firebase.google.com/docs/reference/app-distribution/rest/v1/projects.apps.releases/list?hl=zh-tw
  const headers = {
    "Content-Type": "application/json; charset=UTF-8",
    "Authorization": "Bearer " + ScriptApp.getOAuthToken(), // 現在のアカウントのトークンを直接使用
  };
  
  const options = {
    "method": "get",
    "headers": headers
  };
  const data = UrlFetchApp.fetch(url, options);
  const result = JSON.parse(data.getContentText()).releases;
  
  if (result == undefined) {
    return [];
  }

  return result;
}

[Firebase Project ID] [Firebase APP ID] は Firebase プロジェクトの設定から取得できます:

コードを貼り付けた後、初回実行時に権限の承認が必要です。

  • 「権限を確認」をクリックしてください

  • 実行するアカウントを選択します。通常は現在の Google Apps Script アカウントと同じです。

  • 「詳細設定」を展開 -> 「XXX に移動」をクリック
    これは自分たちで使うアプリケーションなので、Google の認証は不要です。

  • 「許可する」をクリックしてください

上記の画面は必ず表示されるわけではなく、表示されなくても問題ありません。

許可した後、「デバッグ」または「実行」をクリックするとプログラムを実行できます:

エラーが発生した場合:

1
2
3
4
5
6
7
Exception: Request failed for https://firebaseappdistribution.googleapis.com returned code 403. Truncated server response: {
  "error": {
    "code": 403,
    "message": "リクエストに認証スコープが不足しています。",
    "status": "PERMISSION_DENIED",
    "details":... (muteHttpExceptions オプションを使って完全なレスポンスを確認してください)
...

または

1
Exception: 指定された権限では UrlFetchApp.fetch を呼び出すことができません。必要な権限: https://www.googleapis.com/auth/script.external_request

appsscript.json の oauthScopes に以下の2つの記述が含まれていることを確認してください(ステップ2を参照):

1
2
3
4
"oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/cloud-platform"
  ]

エラーが発生した場合:

1
2
3
4
Exception: Request failed for https://firebaseappdistribution.googleapis.com returned code 401. Truncated server response: {
  "error": {
    "code": 401,
    "message": "リクエストに無効な認証情報が含まれていました。OAuth 2 アクセストークン、ログインクッキー、またはその他の認証情報が必要です…(muteHttpExceptions オプションを使用して完全なレスポンスを確認してください)"

まだバインドされていない GCP プロジェクトを示しています(手順 1 を参照)。または、その GCP プロジェクトで使用したい Google APIs が有効化されていない、現在のアカウントに該当の GCP / Google APIs の使用権限や Firebase App の権限がない場合があります。設定を確認してください。

エラーが発生した場合:

1
Exception: https://firebaseappdistribution.googleapis.com へのリクエストが失敗し、コード404が返されました。サーバー応答は省略されています:

または

1
2
3
4
5
6
7
Exception: Request failed for https://firebaseappdistribution.googleapis.com returned code 400. Truncated server response: {
  "error": {
    "code": 400,
    "message": "リクエストに無効な引数が含まれています。",
    "status": "INVALID_ARGUMENT"
  }
}

Google APIs のリクエストパスが正しいかどうかを確認してください。

接続成功🎉🎉🎉

短くて10行未満のコードでGoogle APIsを簡単に連携できるのがわかります。本当に便利です。興味がある方は、比較のために自分で実装した Google APIs連携時の認証トークン交換のコード手順をご覧ください。非常に面倒です。

次のステップ:

以前の記事「 使用 Google Apps Script Web App 表單串接 Github Action CI/CD 工作 」と組み合わせて、Firebase App Distribution のダウンロードリンクも Web App 上に表示し、メンバーが直接ダウンロードしやすくします。

Demo Result

デモ結果

他の Google APIs も同様に接続可能です。

2025/07 アップデート:

この機能は実際のパッケージングツールに統合されています。最新の記事事例をご参照ください:「CI/CD 実践ガイド(4):Google Apps Script Web App を使って GitHub Actions と連携し、無料で使いやすいパッケージングツールプラットフォームを構築する

ご質問やご意見がありましたら、こちらからご連絡ください

Post MediumからZMediumToMarkdownを使って変換。


🍺 Buy me a beer on PayPal

👉👉👉 Follow Me On Medium! (1,053+ Followers) 👈👈👈

本記事は Medium にて初公開されました(こちらからオリジナル版を確認)。ZMediumToMarkdown による自動変換・同期技術を使用しています。

Improve this page on Github.

本記事は著者により CC BY 4.0 に基づき公開されています。