Outlook メール送信時にSlackに投稿する

WordやExcel等の例に漏れず、Outlookもマクロが組めます。

メール送信時のアクションとして、SlackのIncoming Webhookを叩いてみます。

タスク管理などに応用できるかも?

Outlookでマクロを使うための下準備

マクロを組む準備と、マクロを実行できるように設定をいじります。 Outlookのメニューバーから操作します。

  1. ファイル > オプション > ユーザーリボン と選択し、開発 をONにする
  2. メニューバーに、開発タブが表示される
  3. 開発 > Visual Basic を開いて作成する

Webhookを利用してSlackに投稿する

この記事の例では、SlackのIncoming Webhookというインテグレーションを利用します。

Incoming Webhookの利用については、以下の記事に説明があります。

Slack Incoming Webhookの利用

マクロの作成

Incoming Webhookが発行する受信用URLにHTTPリクエストを送信し、Slackへの投稿を行うサンプルです。

開発 > Visual Basic > 画面左上のProject1以下を展開 > ThisOutlookSessionを開きます。

ThisOutlookSessionに以下を記述して保存します。

Outlookから送信したメールを、SlackにもPOSTします。

TargetURL = "https://hooks.slack.com/services/…"

12行目のTargetURLには、Incoming Webhookで生成したURLを指定します。

sendText = "payload={""text"":""件名: " & objMail.Subject & "\n本文: " & Left(objMail.Body, 200) & """}"

17行目のsendText部分が、実際にWebhookのURLに送信される内容です。メールの件名と本文をPOSTしています。

Left(objMail.Body, 200)

メールの引用などで本文が長すぎると投稿が大変なことになるため、sendText内の上記部分で、半角200文字分だけ投稿されるようにしています。

こんな具合に投稿されます

指定チャンネルへのPOST

デフォルトでは、マクロからPOSTした内容は、Incoming Webhookで設定してある送信先チャンネルに投稿されるようになっています。

sendTextの部分でchannelプロパティを指定することで、任意のpublicチャンネル、ユーザーのDMへ投稿することが可能です。

  • randomチャンネルへの投稿
sendText = "payload={""channel"":""#random"", ""text"":""件名: " & objMail.Subject & "\n本文: " & Left(objMail.Body, 200) & """}"
  • 特定ユーザーのDMへ投稿
sendText = "payload={""channel"":""XXXXXXXXX"", ""text"":""件名: " & objMail.Subject & "\n本文: " & Left(objMail.Body, 200) & """}"

XXXXXXXXXの箇所は、Slackのchannel/ユーザーの識別IDです。チャンネル名あるいはユーザー名を右クリックして取得します。

※右クリック > リンクをコピー > 以下のような形で取得できるリンクの、末尾部分がIDになります。

https://hogehoge.slack.com/team/XXXXXXXXX

投稿にメンションを含める

SlackのIncoming Webhooksでメンションを飛ばす方法を参考にする。

sendText内、textプロパティにて、以下の書式に則ってメンションを記述することができます。

記法メンション
<!here>@here
<!channel>@channel
<@user_id>@michael

記述例

sendText = "payload={""text"":""<!channel> 件名: " & objMail.Subject & "\n本文: " & Left(objMail.Body, 200) & """}"

マクロ作成後、実行できない(有効にならない)場合

マクロの実行時に警告が出て実行できないなどがあれば、署名の作成を行うと解決する場合があります。マクロのセキュリティ設定で、署名のないマクロをブロックするようになっていることが多いです。

最近では下記のファイルを直接実行してデジタル署名を作成するらしいですが、ちょっと怖いですよね。

※ 署名を作らなくてもマクロを有効にできます。何か起きても責任は取れません。

C:\Program Files\Microsoft Office\root\Office16\SELFCERT.EXE

署名の作成を行ったのにまだマクロが動いてくれない場合、一度警告を出させ、明示的に実行を許可してやるとうまくいくケースがあります。
署名を作成しない場合でも、この手順は有効みたいです(動いた例あり)。

  1. (Outlookのメニューバー)開発 > マクロのセキュリティ を開く
  2. すべてのマクロに対して警告を表示する にチェックして保存
  3. Outlookを再起動
  4. マクロの実行について警告のポップアップが表示される
  5. 実行を許可し、マクロを有効化
  6. マクロの動作をテストし、動いたらガッツポーズ

※ 署名を付けてマクロを作成した場合は、ここで署名単位で実行を許可することができます。後々マクロの変更とか作成とかした際に実行許可の手間が省けるとかそういう話です。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です