GmailのメッセージをDiscordへ転送する

GmailのメッセージをDiscordへ転送する

どうもこんにちは🙋‍♂️

メール通知は必須ですが、数が多くなってくると管理大変になってきますよね。私がそうです。

ネットサーフィンしているときに、GmailのメッセージをDiscordへ転送するアプローチを試されている方がいまして、私も試してみました。

概ね、上記の記事通りで期待通りに動作しますがすべてのメールが流れ込んでくるため何らかのルールで分けたいと考えました。

知らない方も多くいらっしゃると思いますが、Gmailはメールエイリアスという機能を持っており、一つのGoogleアカウントで複数のメールアドレスを利用できる機能があります。

次のような方法で現在利用中のメールアドレスに対してメールエイリアスを設定することができます。

h

元々のメールアドレスのexampleのあとに+を付けて任意の文字列を追加することで別のメールアドレスとして利用することができます。

その他詳しい解説については下記のサイトを参考にしてください。

本題

Gmailのエイリアスを設定したら、参考コードを次のように変更してみましょう。

h

本のコードとの違いは下記の点です。

  1. const alias = "example+dev"; で対象のエイリアスを指定します。 複数のエイリアスを指定する場合は、const alias = "example+dev|example+wordpress"; のように、パイプ(|)で区切ります。
  2. GmailApp.search(label:unread to:${alias}); で、未読のメールの中で、指定したエイリアス宛のメールのみを取得します。
  3. getWebhookUrl 関数で、スプレッドシートのアクティブシートのA1セルからWebhook URLを取得します。

今回解説していませんが、スプレッドシートに複数のエイリアスとWebhookアドレスを設定することで、それぞれのエイリアス宛のメールを対応するWebhookアドレスに送信できるようになります。

またDiscord想定で作成していますが、SlackやChatworkなどWebhookを使えるものならどのサービスでも運用可能です。

我が社ではこんな風にカスタムしたいんだ!など相談あればぜひお問い合わせください😉

現場からは以上です。

24.06.10 追記

たまにエイリアス宛のメールではないメールも流れてくるような場合があったため、hook関数のみアップデートしてみました。

  1. const alias = "example\\+dev"; のように、正規表現でエイリアスを指定する際に、+ 記号をエスケープしています。
  2. GmailApp.search(label:unread to:me {${alias}}); のように、検索クエリを変更しました。to:me を使用して自分宛のメールに限定し、{${alias}} を使用して正規表現でエイリアスを指定しています。
  3. messages.map 内で、message.getTo() を使用してメールの受信者を取得し、正規表現でエイリアスが含まれているかどうかを確認しています。エイリアスが含まれていない場合は、null を返すようにしています。
  4. filter(payload => payload !== null) を使用して、null を除外しています。

getWebhookUrl関数は前回までのものを使ってください。

h

もし利用していて、不具合や気になる動作ありましたらお知らせください🙇‍♂️

📮 Contact us

If you have a project or general questions for us, please contact us using the form below.

Note: It may take our team time to reply to your message depending upon the content.

© 2020 ULTRA9MA

This site was created by 🄽Notion and published on ⚡️Super.