わたしたちの会社、長村製作所ではできるだけペーパレスで仕事を進めようという目標を持って、日々仕事に取り組んでいます。
事務作業をペーパレス化していくときに障害となりがちなのがFAXで、入口が紙だとその後にわざわざスキャンして保存するのも手間だし、結局そのまま紙で仕事をするのが楽だよね〜ということになりがちです。
だからといって、FAXでしか連絡が取れない取引先も存在するときにFAXを捨ててしまうというのも難しい判断になりますよね。
そこで、FAXを複合機の機能を使って送られてきたデータを添付したメール転送、Exchangeサーバーのメール受信をトリガーにしてSharepointに保存、そしてFAXがきたことをTeamsのチャンネルに通知するという流れをPower Automateで実現する方法をご紹介します。
複合機にメールアドレスを設定し、SMTPでメール送信
私たちが使っている複合機は富士フイルムさんのもので、通常のパソコンのメールクライアントのように、割り当てるメールアドレスとSMTPサーバにログインするためのID、パスワード等の情報を用意する必要があります。
複合機への設定は富士フィルムさんに手伝ってもらいながら行いましたが、複合機に設定するためのメールアカウントはこちら側で用意する必要がありました。
SMTP接続ができるメールアカウントであればなんでも良いかと思いますが、長村製作所はMicrosoft 365のExchangeサーバを利用しているため、いくつか設定を変更する必要がありました。以下はExchangeサーバ利用者向けの補足として、サポートで案内されたURLを貼っておきます。もしこれだけだとわからないようであれば、Office 365の管理ページからサポートに問い合わせれば丁寧に教えてくれますので、そちらをオススメします。
1. 対象アカウントのAzure ADのMFA(多要素認証)をオフにする
Azure ADでは、セキュリティの規定値を設定している場合、自動的にアカウントの多要素認証がオンになります。
通常はセキュリティを担保する上で欠かせない機能ですが、複合機がMFA認証に対応していない場合が多いので、基本的に対象のアカウントではMFAをオフにしたほうが良いとMicrosoftのサポートで案内されました。
Microsoft 365の多要素認証
Azure AD のセキュリティの既定値群
Microsoft 365 Business Premium の多要素認証を設定する
2. テナントのSMTP AUTHを有効にする
また、規定値ではテナント単位でSMTP AUTHが無効になっているようで、私たちもそれを有効にする設定を行いました。こちらの設定はPower Shellで行いますので、以下、参考URLになります。
Windows への PowerShellGet のインストール
URL : https://learn.microsoft.com/ja-jp/powershell/scripting/gallery/installing-psget?view=powershell-7.3
Exchange Online PowerShell モジュールについて
URL : https://learn.microsoft.com/ja-jp/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps
Exchange Online PowerShell に接続する
上記を参考にExchange Online PowerShellにログインした後、
Get-CASMailbox -Identity "対象のメールアドレス" | Select SmtpClientAuthenticationDisabled
すると対象のアカウントのSMTP AUTHが無効化されているかどうかが確認できます。
この結果がTrueになっている場合は、
Set-CASMailbox -Identity user@contoso.com -SmtpClientAuthenticationDisabled $False
これでSMTP AUTHの無効化を解除します。
設定が終わったら、Power ShellからSMTPでメール送信して確認することができるのでやってみましょう。
Send-MailMessage -SmtpServer "smtp.office365.com" -From "<送信元アドレス>" -To "<宛先アドレス>" -Subject "<件名>" -Body "<本文>" -UseSsl -Port 587 -Credential (Get-Credential)
Power Automateでメールの添付ファイルをSharepointに保存し、Teamsで通知する
ここからは、Exchangeメールサーバにメールが届いてから、それをトリガーに添付されたファイルをSharepointに保存する方法、さらにTeamsのタグ通知をする方法を説明します。全体の流れはこんな感じです。
トリガーとしてメールの受信時を指定する
まずは、「新しいメールが共有メールボックスに届いた時(V2)」を選択し、使用するメールアドレスとフォルダーを以下のように入力します。わたしたちは、メールアドレスとしてOffice 365の共有メールボックスを利用しているので、Office 365 Outlookから「新しいメールが共有メールボックスに届いた時(V2)」を使用しましたが、個人のメールアドレス等でもトリガーに設定できるかと思います。
まずは、メールに添付された画像ファイルを保存するためのフォルダを自動作成しますが、このパスは後で画像のリンク先として使用するので、一旦変数に格納しておきます。
Sharepoint上にフォルダを作成する
Sharepointの「新しいフォルダーの作成」を選択します。
フォルダーのパスには、Sharepointのドキュメントフォルダのルートから実際に作成したいフォルダを指定します。
この例では、Sharepointの”営業問い合わせ”フォルダに、202202というような、西暦(YYYY)月(MM)のフォルダを自動的に作成しています。
formatDateTime式には、”formatDateTime(convertTimeZone(utcNow(), ‘UTC’, ‘Tokyo Standard Time’), ‘yyyyMM’)”を指定しています。
ファイルへのリンク用文字列の作るための変数(配列)を初期化しておく
ここからはメールの添付ファイルの数だけ繰り返し処理を行うことになりますが、Teamsに以下のような感じでFAXされた画像ファイルへのリンクを貼りたいので、
事前に次のように初期化した配列を用意しておきます。
添付ファイルをクラウドに保存する
ここからは、添付ファイルの数だけ処理をするので、Apply to eachで添付ファイルを指定してループを回します。
Sharepointのファイルの作成で、サイトのアドレスにSharepointサイトのアドレスを、フォルダーのパスに先ほどフォルダを作成したときの完全パスを、ファイル名に添付ファイル 名前を、ファイル コンテンツに添付ファイル コンテンツをそれぞれ指定します。
次に、先ほど用意しておいた空の配列に、図のような添付ファイルへのハイパーリンク文字列を追加していきます。この配列は後ほどJoin関数で結合して、Teamsの通知に用います。
Teamsタグのトークンを取得する
Teamsに通知する先のトークンを取得します。
個人宛に通知することもできますが、タグを使うといつでも通知するメンバーを追加したり削除できて便利です。
ここでは、営業部チームに事前に作成済みの営業受付チームのタグトークンを取得しています。
Teamsのチャンネルにメッセージを投稿する
最後に、用意しておいた添付ファイルのリンクを格納してある配列と、メンションタグを使って以下のようにTeamsのチャンネルに通知します。
joinのところでは、各配列のデータを改行区切りにして結合しています。
Message欄はこれだけだとわかりづらいかもしれないので、一応コードビューのコードを貼っておきます。
"body/messageBody": "<p>@{outputs('タグの_@mention_トークンを取得する')?['body/atMention']}<br>\nメッセージを受信しました。<br>\n<br>\n件名:<br>\n@{triggerOutputs()?['body/subject']}<br>\n<br>\n<br>\n本文:<br>\n@{triggerOutputs()?['body/body']}<br>\n<br>\n<br>\n保存先:<br>\n@{join(variables('path_array'), '\n\n')}<br>\n</p>"
完成したらテストしてみる
ここまで終わったら、メールを送るとTeamsの通知が送られてきて、Sharepointに添付ファイルが保存されているはずなので実行してみましょう!
このように通知がいけばOKです!
もし何か疑問点があれば問い合わせフォームまで送っていただければ、余裕があれば対応します。
それでは。
ブログ村のランキング、ポチッと応援よろしくお願いします。
コメント