はじめに
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プロジェクトの設定が必要になります。
- Gmail APIを有効にする必要がある
Gmail.Users.Messages.list()
などのAPIメソッドはGCPプロジェクトで有効化されたGmail APIを通じて動作します。
- APIの認可スコープの管理
- Gmail APIを利用する場合、
https://www.googleapis.com/auth/gmail.readonly
などのOAuthスコープを明示的に指定する必要があります。
- Gmail APIを利用する場合、
- 実行権限の管理
- GASが特定のGmailアカウントに対して適切な権限を持っているかどうかをGoogleが認証するため、GCPプロジェクトを通じて管理する仕組みが必要となります。
GCPの設定手順
Gmail APIを使用するために、GCPで必要な設定を行います。
1. GCPプロジェクトの作成
- Google Cloud Console にアクセス
- 新しいプロジェクトを作成(既存のプロジェクトがある場合は流用可)
- プロジェクト名を入力し、作成をクリック
2. Gmail APIの有効化
- 「APIとサービス」 > 「ライブラリ」 へ移動
- 「Gmail API」を検索し、クリック
- 「有効にする」 ボタンを押す
3. GASの「サービス」からGmail APIを追加
- GASのエディタを開く
- 「サービス」 をクリック
- 「サービスを追加」 を選択し、「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のスクリプト実行時に求められる認証プロセス
- 初回実行時にGmailへのアクセス許可を求められる
- ユーザーが許可を与えると、そのGoogleアカウントで実行可能に
- 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を活用して生成されています。