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

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

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

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

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

GmailのメッセージをDiscordへ転送する|いちご

スプレッドシートで利用できるスクリプト Google Apps Script の Gmail Service を使ってGmailからメールを取得できるらしいので、DiscordのWebhookでチャンネルにメッセージを送信してみようと思います ざっくりと4つの設定を行っていきます - スプレッドシートを作成する - WebhookのURLを取得する - スクリプトを登録する - 定期実行のトリガーを設定する 慣れない操作だとは思いますが、コピペとマウスでできるので是非やってみてください スプレッドシートを作成する スクリプトを登録するスプレッドシートを

GmailのメッセージをDiscordへ転送する|いちご

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

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

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

https://carbon.now.sh/aSAVWI2ZXoAemTXylc1s

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

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

Gmail のメール エイリアスを利用しよう! サブアドレスとしての使い方や活用方法を紹介

Gmail のメール エイリアスは、一つの Google アカウントで複数のメールアドレスを利用できる機能です。サブアドレスとして用途別にアドレスを作成すれば、受信トレイが整理しやすくなるでしょう。本記事では、Gmail のメール エイリアスの概要、使い方、使用する際の留意点を紹介します。

Gmail のメール エイリアスを利用しよう! サブアドレスとしての使い方や活用方法を紹介

本題

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

https://carbon.now.sh/KmxG7ZIWWRS8IaZxXTnK

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

  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関数は前回までのものを使ってください。

https://carbon.now.sh/kXhfkn16ODxmpc0tgAun

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

image

😇 Nobuhiro Kumagai

いつか海外で余生を過ごすため頑張るフロントエンドエンジニアです。Webに関わることなら大体経験済みで守備範囲は広め、お気軽にお声がけください 😄

  • 💻 Web Creator [Director, Front-end, etc]
  • 📍 宮城県仙台市在住
  • 📕 私についての記事
ultra9ma (@ultra9ma) on X

Web Creator (Director, Front-end, etc.) Essentially bathroom graffiti. 🪦 R.I.P @plus9ma 🔮 AI Creative Accounts @sulplex

ultra9ma (@ultra9ma) on X
お気軽にお声がけください
REACTER | 仙台拠点のホームページ制作

REACTERは仙台市を拠点として価値のあるWEBサイト構築のための企画・制作、グラフィック制作、UI/UX制作を行っています。

代表 (2015年4月 〜 現職)

📮 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.

📧 Talk to REACTER

https://docs.google.com/forms/d/e/1FAIpQLScyLS5lzdvFbPwuOaU7XAqbtpiw7Uxdw-DAgCuDvxecdBRjIQ/viewform?usp=sf_link

🖥 Work with REACTER

Google Forms - create and analyze surveys, for free.

Create a new survey on your own or with others at the same time. Choose from a variety of survey types and analyze results in Google Forms. Free from Google.

Google Forms - create and analyze surveys, for free.

© 2020 ULTRA9MA

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