Gmailの特定条件に一致するメールをGAS(Google Apps Script)で自動転送する方法を解説。基本的なスクリプトの書き方やトリガーの設定方法を紹介します。複数アカウントでの管理もラクになるので、手動で転送する手間を省きたい方は必見。
GASとは?
GAS(Google Apps Script)は、Googleの各種サービス(Gmail、スプレッドシート、Googleドライブなど)を自動化できるスクリプト言語です。JavaScriptベースなので比較的学習しやすく、APIを活用してさまざまなタスクを効率化できます。
本記事では、GASを使ってGmailの特定条件のメールを自動転送する方法を紹介します。
「普通に手動で転送したほうが早いんじゃない?」と思うかもしれませんが、複数のアカウントや大量のメールを処理する場合はGASで自動化すると圧倒的に楽になります。
今回のコードで実現できる機能
今回紹介するGASのスクリプトでは、以下のような機能を実現できます。
- 特定の条件(例: 件名に「重要」が含まれる)に合致するメールを転送
- Gmail内の未読メールのみを対象にする設定
- 複数の宛先に転送(カスタマイズ可)
- 一定の頻度で自動実行
例えば、「特定のクライアントからのメールを別のアドレスに転送したい」「Gmailを複数アカウントで使い分けているけど、手動で転送するのが面倒」といった場合に便利です。
今回のコードで必要な準備
- GoogleアカウントでGASを利用できるようにする
- Googleドライブを開き、「新規」→「その他」→「Google Apps Script」を選択。
- Gmailの転送先アドレスを登録(推奨)
- Gmail設定(⚙️アイコン → [すべての設定を表示])から「メール転送とPOP/IMAP」を開き、転送先のアドレスを追加しておく。
- これをしないと転送時にスパム扱いされる可能性がある。
- GASの実行権限を承認
- 初回実行時にGoogleの認証画面が表示されるので、スクリプトの実行を許可。
GASのスクリプト解説
以下のコードをGASのエディタに貼り付けて実行すると、件名に「重要」を含む受信メールを自動転送できます。
function autoForwardEmails() {
var threads = GmailApp.search('subject:"重要" in:inbox'); // 件名が「重要」のメールを取得
threads.forEach(function(thread) {
thread.getMessages().forEach(function(msg) {
msg.forward("forward@example.com"); // 転送先のメールアドレスを指定
});
});
}
スクリプトの解説
GmailApp.search('subject:"重要" in:inbox')
→ Gmailの受信トレイ内で、件名に「重要」を含むメールを検索。.forEach(function(thread) {...})
→ 見つかったスレッドごとに処理を実行。.getMessages().forEach(function(msg) {...})
→ スレッド内の全メッセージを取得し、各メールを転送。msg.forward("forward@example.com")
→ 指定したアドレスへメールを転送。
カスタマイズ例
to:"指定のメールアドレス"
を条件に加えれば、特定の送信元メールだけを転送可能。is:unread
を追加すれば、未読メールのみ対象にできる。
今回のコードでのトリガーの設定
GASでスクリプトを自動実行するにはトリガーを設定します。
トリガーの追加手順
- GASエディタを開く
- 左側の「時計アイコン(トリガー)」をクリック
- 「トリガーを追加」ボタンを押す
- 以下のように設定:
- 実行する関数:
autoForwardEmails
- 実行するデプロイ:デフォルト
- イベントのソース:時間主導型
- 時間ベースのトリガーのタイプ:1時間ごと
- 保存をクリック
- 実行する関数:
初回実行時の承認手順について
初回実行時にはGoogleの認証が必要です。
- スクリプトを実行すると、「このアプリはGoogleで確認されていません」と警告が出る。
- 「詳細」をクリックし、下部の「(安全でないページ)に移動」を選択。
- Googleアカウントの許可を求められるので、「許可」ボタンを押す。
応用例・カスタマイズ
1. 複数の転送先を設定
function autoForwardEmails() {
var threads = GmailApp.search('subject:"重要" in:inbox');
var recipients = ["user1@example.com", "user2@example.com"];
threads.forEach(function(thread) {
thread.getMessages().forEach(function(msg) {
recipients.forEach(function(email) {
msg.forward(email);
});
});
});
}
FAQ
Q: スクリプトが実行されているか確認する方法は?
A: Gmailの「送信済みメール」フォルダをチェックすると転送されたメールが確認できます。エラーが発生した場合は「スクリプトエディタ」の[実行ログ]を確認。
Q: 既存のフィルタと併用できる?
A: 可能。ただし、Gmailの転送設定と重複すると意図しない動作をすることもあるため、GAS側で明確なフィルタ条件を設定するのがオススメ。
Q: GASの無料枠でどれくらい動かせる?
A: 無料アカウントだと1日あたり90分までの実行時間制限があります。大量のメールを処理する場合はGoogle Workspaceの有料プランを検討。
まとめ
- GASを使えば、Gmailの特定条件に合致するメールを自動転送可能。
- コードを一度書けば、あとはトリガーで放置OK。
- 手動転送よりも楽なので、大量のメール管理が必要な場合に便利。
- ただし、Gmailのフィルタと併用するなら設定に注意。
「普通に手動で転送してもいいけど、GASなら自動化できる」という感じですね。
時間をかけずに効率化したいなら、ぜひ試してみてください!