朝起きると、未読メールが50件。
そのうち49件はメルマガやシステム通知、どうでもいいCC共有。
でも、その中にたった1件だけ、今日中に返信しないとマズい「重要案件」が混ざっている。
これを見つけるのは、もはや「ウォーリーをさがせ」です。
忙しい時に限って見落とし、数時間後に「あのメール見た?」と電話がかかってきて冷や汗をかく。
そんなスリルはもう要りません。
今回は、Gmailに届いたメールの中から「本当に重要なメール」だけをピックアップして、あなたが普段見ているSlack(チャット)に通知するボットを作ります。
「メールは見ないけど、Slackなら即気づく」
そんな現代のビジネスパーソンに捧ぐ、コピペで終わる0円DXです。
1. 何を作るの?(完成イメージ)
今回は「ラベル」という機能を使います。
- Gmailで「特定の条件(例:社長からのメール)」に、自動で「Slack通知」というラベルが付くように設定する。(これはGmailの標準機能)
- プログラムが5分おきに「Slack通知」ラベルが付いたメールを回収する。
- Slackに内容を投稿しメールからラベルを外す(完了)。
この仕組みなら、「件名に【緊急】が含まれる時だけ」とか「あのお客さんから来た時だけ」といった細かいワガママ設定が可能です。
Step 1:Slackの「郵便受け(Webhook)」を用意する
まずは、通知を受け取るSlack側の準備です。
「ここに向かってボール(情報)を投げれば届くよ」というURLを取得します。
- PCでSlackを開き、通知させたいチャンネル名を右クリック > 「チャンネル詳細を開く」。
- 「インテグレーション」タブ > 「アプリを追加する」。
- 検索窓に「Incoming Webhooks」と入力して、「インストール(または設定)」をクリック。
- ブラウザが立ち上がるので、「Slackに追加」をクリック。
- 投稿先のチャンネルを選んで「Incoming Webhook インテグレーションの追加」をクリック。
- 画面に表示された 「Webhook URL」 (https://hooks.slack.com/services/… から始まる長い文字列)をコピーして、メモ帳に貼っておく。
※これが「パスワード」兼「住所」になります。誰にも教えないでください。
Step 2:Gmailに「目印(ラベル)」を作る
次にGmail側の準備です。
- Gmailを開き、左メニューの「もっと見る」>「新しいラベルを作成」。
- ラベル名を 「Slack通知」 にして作成。(一字一句この通りにしてください!)
これで準備完了。「このラベルが付いたメール=Slackに飛んでいくメール」になります。
Step 3:魔法の書(スクリプトエディタ)を開く
前回同様、Googleの裏側へ行きます。
- Googleドライブを開く(またはスプレッドシートでもOK)。
- 左上の「+ 新規」>「その他」> 「Google Apps Script」。
- 開いた画面の文字を全部消して真っ白にする。
Step 4:魔法の呪文(コード)をコピペする
以下のコードをコピーして、貼り付けてください。
※貼り付けた後、1行目の “ここにURLを貼り付け” の部分だけ、さっきStep 1で取得したSlackのURLに書き換えてください!
function notifyGmailToSlack() {
// ■設定エリア(ここだけ変更してください)------------------
const slackWebhookUrl = "https://hooks.slack.com/services/xxxxx/yyyyy/zzzzz"; // Step1で取得したURL
const targetLabelName = "Slack通知"; // Step2で作ったラベル名
// -----------------------------------------------------
// 指定したラベルが付いているメール(スレッド)を取得
const label = GmailApp.getUserLabelByName(targetLabelName);
// もしラベル自体がなかったらエラーを表示して終了
if (!label) {
console.log(`「${targetLabelName}」というラベルが見つかりません。Gmailで作ってください。`);
return;
}
// 未読・既読にかかわらず、そのラベルが付いたメールを取得
const threads = label.getThreads();
// 対象メールがなければ終了
if (threads.length === 0) {
console.log("通知対象のメールはありません。");
return;
}
// メールを1件ずつ処理
for (let i = 0; i < threads.length; i++) {
const thread = threads[i];
const messages = thread.getMessages();
const lastMessage = messages[messages.length - 1]; // スレッドの最新の1通を取得
const subject = lastMessage.getSubject(); // 件名
const from = lastMessage.getFrom(); // 送信者
const body = lastMessage.getPlainBody().substring(0, 200); // 本文(長いので先頭200文字だけ)
const date = Utilities.formatDate(lastMessage.getDate(), Session.getScriptTimeZone(), "MM/dd HH:mm");
// Slackに送るメッセージを作る
const payload = {
"text": `📩 *Gmailから重要なメールが届きました*`,
"attachments": [{
"color": "#D00000", // 赤いライン
"fields": [
{ "title": "件名", "value": subject, "short": false },
{ "title": "送信者", "value": from, "short": false },
{ "title": "受信日時", "value": date, "short": true },
{ "title": "本文(抜粋)", "value": body + "...", "short": false }
]
}]
};
// Slackに送信実行!
const options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch(slackWebhookUrl, options);
// 二重送信を防ぐため、ラベルを外す(処理完了)
thread.removeLabel(label);
}
}
書き換えたら、フロッピーアイコン(💾)で保存。「Gmail通知」など名前をつけておきましょう。
Step 5:テスト実行と「承認」
- Gmailに行き、適当なメール(どうでもいいやつ)に、手動で「Slack通知」ラベルを付けてみてください。ドラッグ&ドロップで付きます。
- Apps Script画面に戻り、「▷ 実行」 をクリック。
- 「承認画面」が出ます(前回と同じ手順で突破してください)。
- 権限を確認 > アカウント選択 > 詳細 > 安全ではないページへ移動 > 許可
- 実行完了後、Slackを見てください。「📩 Gmailから重要なメールが届きました」と通知が来ていれば成功です!
- Gmailに戻ると、さっきのメールから「Slack通知」ラベルが消えているはずです(これが「処理済み」の証拠です)。
Step 6:自動化(トリガー)と「振り分け設定」
最後に仕上げです。
1. プログラムを定期実行させる
Apps Script画面の左側「時計マーク(トリガー)」から、以下のように設定して保存します。
- イベントのソース:「時間主導型」
- タイプ:「分ベースのタイマー」
- 間隔:「5分おき」(または10分おき)
これで、5分に1回「ラベル付きメール」を回収しに来てくれます。
2. Gmailの「フィルタ」を設定する(ここがキモ!)
手動でラベルを付けるのは面倒なので、Gmailの機能で自動化します。
- Gmailの検索窓の右にある調整ボタンをクリック。
- 条件を入れる(例:Fromに 社長のアドレス、または件名に 【緊急】 至急 など)。
- 「フィルタを作成」をクリック。
- 「ラベルを付ける」にチェックを入れ、「Slack通知」を選ぶ。
- 「フィルタを作成」完了。
これで完成です!
今後、条件に一致するメールが届くと、自動でラベルが付き、5分以内にボットが回収し、Slackに通知してくれます。
応用編:SlackじゃなくてLINEやChatworkがいい!
「うちはSlack禁止なんです……」
「LINEに通知してくれたら、外出先でも気づけるのに」
安心してください。今回のコードの「送信部分」を少し書き換えるだけで、LINEやChatwork、あるいはMicrosoft Teamsにも通知可能です。
ただ、それぞれのツールで「URLの取得方法」や「メッセージの書き方」が微妙に違います。全部書くと記事が辞書みたいに分厚くなってしまうので、ここでは割愛しました。
「私の会社で使っている〇〇ツールに通知したい!」
「本文をもっと長く表示したい!」
「特定のキーワードが入っている時だけ、メンション(@)を飛ばして叩き起こしたい!」
そんなカスタマイズをご希望の方は「うしろぽっけ」にお任せください。
あなたの会社のチャット文化に合わせた、世界に一つの通知ボットを作成します。
カスタマイズを相談する