こんにちは、凛です。Gmail標準の転送ルールでは「件名にXがあれば」程度しかできない。GASなら本文の内容や添付ファイルの有無まで条件にできます。
基本実装
function autoForward() {
const threads = GmailApp.search('is:unread label:重要 -label:転送済');
const FORWARD_TO = 'team@example.com';
const label = GmailApp.getUserLabelByName('転送済') || GmailApp.createLabel('転送済');
threads.forEach(thread => {
thread.getMessages().forEach(msg => {
if (msg.getBody().includes('注文')) {
msg.forward(FORWARD_TO);
}
});
thread.addLabel(label);
});
}
5分おきトリガーで動かせば、未読+特定条件のメールを自動転送。
カスタマイズ例
送信元ドメインで分岐
const from = msg.getFrom();
if (from.includes('@partner-a.com')) {
msg.forward('team-a@example.com');
} else if (from.includes('@partner-b.com')) {
msg.forward('team-b@example.com');
}
添付ファイルだけ転送
const attachments = msg.getAttachments();
if (attachments.length > 0) {
GmailApp.sendEmail(FORWARD_TO, '添付転送: ' + msg.getSubject(), '元: ' + msg.getFrom(), {
attachments: attachments
});
}
Slack/Discordに転送
function forwardToSlack(msg) {
const payload = {
text: `📧 *${msg.getSubject()}*\n送信元: ${msg.getFrom()}\n${msg.getPlainBody().substring(0, 500)}`
};
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
});
}
まとめ
- GmailApp.search で柔軟な検索
- 本文・添付・送信元で詳細条件分岐
- ラベルで二重転送防止
- Slack/Discord連携も簡単
関連記事
この記事を書いた人:凛
2児のママで現役ナース。夜勤明けの細切れ時間を副業GASに投じ、月5〜8万円の副収入を継続中。「看護師でもコードは書ける」を合言葉に、家事育児とプログラミングを両立する等身大の情報を発信しています。本記事のコードは静的検証済みです(構文・API仕様・ロジックを確認)。