【Google Apps Script】を使用してGmailをSlackに自動転送する手順

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に投稿するスクリプトを作成します。

  1. Googleドライブで「新規」 > 「その他」 > 「Google Apps Script」を選択します。
  2. スクリプトエディタが開いたら、以下のコードを貼り付けます。

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();
    });
  });
}
  1. コード内の 'ここにコピーしたWebhook URLを貼り付けてください' の部分を、ステップ1で取得したURLに置き換えます。
  2. プロジェクト名を好きな名前に変更し、保存します。

3. トリガーを設定してスクリプトを自動実行する

最後に、作成したスクリプトを定期的に自動実行するためのトリガーを設定します。

  • スクリプトエディタの左側にある「トリガー」(時計のアイコン)をクリックします。
  • 右下の「+ トリガーを追加」をクリックします。
  • 以下の設定を行います。
    • 実行する関数を選択: sendMailToSlack
    • 実行するデプロイを選択: Head
    • イベントのソースを選択: 時間主導型
    • 時間ベースのトリガーのタイプを選択: 分ベースのタイマー
    • 時間の間隔を選択: 5分おき(メールをチェックする頻度)
  • 「保存」をクリックします。

初回実行時には、Googleアカウントへのアクセス許可が求められますので、指示に従って許可してください。これで、5分ごとに自動で未読メールをチェックし、Slackに転送する仕組みが完成します。

Posted by

【ティア】"マーケティング×海外展開×人材紹介"の3軸により、クライアントの事業成長にコミットするサービスを提供。オン/オフライン両輪でのブランディングから海外展開、人材紹介までワンストップで対応し、売上拡大とコスト削減を実現します。大手上場企業から中堅/中小企業、スタートアップ、行政から金融機関、海外の現地企業/行政まで延べ500社以上の支援・取引実績があります。
*TIER(ティア)は、株式会社Strategy&Design Laboのサービスブランドです

目次