Gmail APIをGoogle Apps Script(GAS)で利用する際のGCP設定と認証方法

はじめに

Google Apps Script (GAS) でGmailのデータを取得し、処理を行う場合、GmailApp もしくは Gmail API を使用する方法があります。GmailApp はGASの内部サービスであり、GCP(Google Cloud Platform)での特別な設定は不要です。一方、Gmail API を利用する場合は、GCPプロジェクトの作成とAPIの有効化が必要となります。

本記事では、Gmail APIをGASで利用する際のGCPプロジェクト設定と認証の流れについて詳しく解説します。


Gmail APIをGASで利用する場合のGCP設定が必要な理由

GASはGoogleのクラウド環境上で実行されるため、通常のスクリプトであればOAuthの処理はGAS側が自動で行います。しかし、Gmail APIを利用する場合は以下の理由でGCPプロジェクトの設定が必要になります。

  1. Gmail APIを有効にする必要がある
    • Gmail.Users.Messages.list() などのAPIメソッドはGCPプロジェクトで有効化されたGmail APIを通じて動作します。
  2. APIの認可スコープの管理
    • Gmail APIを利用する場合、https://www.googleapis.com/auth/gmail.readonly などのOAuthスコープを明示的に指定する必要があります。
  3. 実行権限の管理
    • GASが特定のGmailアカウントに対して適切な権限を持っているかどうかをGoogleが認証するため、GCPプロジェクトを通じて管理する仕組みが必要となります。

GCPの設定手順

Gmail APIを使用するために、GCPで必要な設定を行います。

1. GCPプロジェクトの作成

  1. Google Cloud Console にアクセス
  2. 新しいプロジェクトを作成(既存のプロジェクトがある場合は流用可)
  3. プロジェクト名を入力し、作成をクリック

2. Gmail APIの有効化

  1. 「APIとサービス」 > 「ライブラリ」 へ移動
  2. 「Gmail API」を検索し、クリック
  3. 「有効にする」 ボタンを押す

3. GASの「サービス」からGmail APIを追加

  1. GASのエディタを開く
  2. 「サービス」 をクリック
  3. 「サービスを追加」 を選択し、「Gmail API」を追加

Google Apps Script(GAS)でGmail APIを利用するコード例

以下は、Gmail APIを利用して最新のメールを取得するGASスクリプトの例です。

function listRecentEmails() {
  const messages = Gmail.Users.Messages.list('me', { maxResults: 5 });

  if (!messages.messages) {
    console.log("メールが見つかりませんでした");
    return;
  }

  messages.messages.forEach(msg => {
    const message = Gmail.Users.Messages.get('me', msg.id);
    console.log("件名: " + getHeader(message, "Subject"));
    console.log("送信者: " + getHeader(message, "From"));
    console.log("日時: " + new Date(parseInt(message.internalDate)));
    console.log("=================================");
  });
}

function getHeader(message, name) {
  const headers = message.payload.headers;
  const foundHeader = headers.find(header => header.name === name);
  return foundHeader ? foundHeader.value : "不明";
}

実行時の注意点

  • 初回実行時に Gmail へのアクセス許可 を求めるダイアログが表示されるので、許可する。
  • Gmail.Users.Messages.list() を使うためには、GCPの Gmail API の有効化 が必要。
  • スクリプトが正しく動作しない場合は、Scopes の設定を確認し、https://www.googleapis.com/auth/gmail.readonly を追加する。

認証関連の注意点

GASではクライアントシークレットは不要

GAS上で実行する場合、Googleの認証管理が自動で行われるため、OAuth 2.0のクライアントシークレットやアクセストークンの管理は不要 です。

GASのスクリプト実行時に求められる認証プロセス

  1. 初回実行時にGmailへのアクセス許可を求められる
  2. ユーザーが許可を与えると、そのGoogleアカウントで実行可能に
  3. GCPプロジェクトの設定が正しく行われていれば、そのままAPIが動作する

まとめ

GmailApp を利用する場合、GCP設定は不要。GASの標準機能として利用可能。 ✅ Gmail API を利用する場合は、GCPプロジェクトの作成とAPIの有効化が必要。 ✅ GASでGmail APIを使用する際は、GASの認証フローに従い、クライアントシークレットや手動でのOAuth設定は不要。 ✅ GCP上で 「Gmail API」 を有効化し、GASの 「サービス」 でGmail APIを追加することで動作する。

GASでGmail APIを活用することで、より高度なメール処理が可能になります。GCPの設定さえ正しく行えば、手間なくAPIを活用できるので、ぜひ試してみてください。


本記事の一部はAIを活用して生成されています。