Gmail の新着メールを自動で Slack に通知する仕組みを、Google Apps Script(GAS)を活用して効率的に構築しませんか?本記事では、Incoming Webhook の設定からスクリプトの実装、そして定期実行トリガー設定まで、手順をひとつずつ丁寧に解説します。社内の情報共有をよりスピーディかつストレスフリーにするために、ぜひこの記事をご活用ください。
1. SlackでIncoming Webhook URLを取得する
まず、メールを転送したいSlackチャンネルにIncoming Webhookを設定し、専用のURLを取得します。
- Slackで「Appディレクトリ」を開きます。
- 検索バーで「Incoming WebHooks」を検索し、インストールします。
- 投稿先のチャンネルを選択し、「Incoming Webhookインテグレーションの追加」をクリックします。
- 表示されたWebhook URLをコピーして保存しておきます。これはスクリプト内で使用します。
2. Google Apps Scriptのコードを作成する
次に、Gmailからメールを読み込み、Slackに投稿するスクリプトを作成します。
- Googleドライブで「新規」 > 「その他」 > 「Google Apps Script」を選択します。
- スクリプトエディタが開いたら、以下のコードを貼り付けます。
JavaScript
// 取得したSlackのWebhook URLをここに貼り付けます
const slack_url = 'ここに貼り付け';
// スクリプトのメイン関数
function sendMailToSlack() {
// 過去5分以内に受信した未読メールを検索
const threads = GmailApp.search('is:unread newer_than:5m');
// 未読メールがなければ終了
if (threads.length === 0) {
return;
}
// 各メールスレッドをループ処理
threads.forEach(function(thread) {
// スレッド内のすべてのメッセージを取得
const messages = thread.getMessages();
// 各メッセージをループ処理
messages.forEach(function(message) {
// メールの送信者、件名、本文を取得
const sender = message.getFrom();
const subject = message.getSubject();
const plainBody = message.getPlainBody();
// Slackに送信するメッセージを整形
const payload = {
"text": `
:email: *新しいメールが届きました*
*From*: ${sender}
*Subject*: ${subject}
*本文*: ${plainBody}
`
};
// SlackのWebhook URLにメッセージを送信
UrlFetchApp.fetch(slack_url, {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
});
// 転送後、メールを既読にする
message.markRead();
});
});
}
- コード内の
'ここにコピーしたWebhook URLを貼り付けてください'
の部分を、ステップ1で取得したURLに置き換えます。 - プロジェクト名を好きな名前に変更し、保存します。
3. トリガーを設定してスクリプトを自動実行する
最後に、作成したスクリプトを定期的に自動実行するためのトリガーを設定します。
- スクリプトエディタの左側にある「トリガー」(時計のアイコン)をクリックします。
- 右下の「+ トリガーを追加」をクリックします。
- 以下の設定を行います。
- 実行する関数を選択:
sendMailToSlack
- 実行するデプロイを選択:
Head
- イベントのソースを選択:
時間主導型
- 時間ベースのトリガーのタイプを選択:
分ベースのタイマー
- 時間の間隔を選択:
5分おき
(メールをチェックする頻度)
- 実行する関数を選択:
- 「保存」をクリックします。
初回実行時には、Googleアカウントへのアクセス許可が求められますので、指示に従って許可してください。これで、5分ごとに自動で未読メールをチェックし、Slackに転送する仕組みが完成します。