Microsoft Graph APIでメールの自動返信設定を自動で設定する
こんにちは。アイシーティーリンクの増田です。
関東でも連日猛暑日となり梅雨明けの宣言はまだですが既に夏バテになりそうです。おかげさまで朝から晩まで四六時中エアコンのお世話になってちょっとだけ電気代が心配です。
はじめに
さて、皆さんはメールの自動返信設定ってやってますか?
長期間休んでいるときにメールが届いたら「X月Y日までお休みをいただきます。お急ぎのところ申し訳ありませんが、X月Y日より順次対応いたします。」みたいな挨拶メールを勝手に返信するように設定する機能です。
私自身はあんまりやらないのですが、Microsoft 365でメールの運用をやっていると、会社を辞める人とか諸事情でメールの利用を停止する人というのが出てきます。
このようなアカウントは削除してから完全に消滅するまで一定期間保持されます。
保持期間中はメール受信エラーにならないため知らずにメールを送ってきた方とのすれ違いの懸念が残ります。
このような状態から引き起こされる無用なトラブルを防止するために、「このユーザーは退職しました。」みたいな自動返信を設定しているんですね。
そして、これまでは時々この自動返信設定の依頼が来ており、都度Exchange Online Powershellで接続して、Set-MailboxAutoReplyConfigurationコマンドレットで指定のアカウントに返信の文面をセットする作業をしていました。
文面は固定で対象者の一覧もリストでもらえるので10分くらい対応でき、大した手間ではないのですが、わざわざ手を動かさないといけないのが気になって、どうにか改善できないかと検討したときにMicrosoft Graph APIのリファレンスにメールボックスの設定変更をするAPIを見つけて「これだ!」と思いました。
ただ、MS365のE3にビルトインされたPower Automateだとメールボックスの設定変更APIのコールはプレミアムコネクタのHTTPを使わないとできず、ライセンス調達できたらやる。って思ってしばらく放置していました。
そうこうしているうちに別件でPower Automateのプレミアムコネクタを使用するためのライセンスを調達する運びとなり、手始めに実装してみることに決めました。
仕様検討
これまでの対応の経験から、設定する返信文面は「退職」と「メール利用停止」の2パターン。
ごくまれにこのユーザーの自動返信設定を解除してほしい。という依頼を受けたことがあったので、処理としては「退職」「メール利用停止」「解除」の3パターン対応できればユーザー側(設定依頼元)のニーズを満たせます(そもそもユーザーのニーズなんてものはないのですが・・・)。
対象者の情報はExcel表にまとめてメール添付で依頼されていましたが、メールで受け取るとPower Automateに食わせるためのトリガー設定等々面倒です。
今後の継続性を考えたときに、Excel表を1ファイルだけ受け取れるFormを作ってそこからフローに流し込むことに決めました。
また、Excel表には行ごとにユーザーのID、メールアドレス、氏名、所属部署等の情報が記入されていましたが、上記のユーザーごとの処理(退職/メール利用停止/解除)を設定する列を1つ追加してもらい、さらにPower Automateでの読み取りを考慮してデータの範囲をテーブルとして定義するようにフォーマットを変えてもらいました。
フロー作成
Graphの呼び出しにはAzure Active Directory(Azure AD)の「アプリの登録」が必要になります。
手順は以前の別記事に記載があるので参考にしてください。
アクセス許可はAPIリファレンスに記載の通りMailboxSettings.ReadWriteを追加し、シークレットの発行まで済ませればAzure AD側の準備は完了です。
実際の処理の流れは、以下のような感じにしました。
Forms:新しい応答が送信されるとき→応答の詳細を取得する
SharePoint:ファイルの取得(プロパティのみ)
Excel:テーブルの取得
Excel:表内に存在する行を一覧表示
Apply to each
UPN取得
Graph APIコール
完了通知
ポイントとなる箇所がいくつかあります。
まず3はフォームをグループフォームとしているので、添付されたExcelリストがSharePointのドキュメントライブラリに格納されます。
自分のアカウントに作った場合はOneDriveに格納されます。
次に4,5でExcelの対象者を読み取って、6で1アカウントずつ操作。
6.2で設定を適用するといった流れです。
HTTPコネクタでGraph APIを呼ぶときは、「詳細オプション」に設定が必要なので以下に簡単に補足します。
認証:Active Directory OAuth を指定
テナント:xxxxxx.onmicrosoft.com (xxxxxx:契約テナントのドメイン)
対象ユーザー:https://graph.microsoft.com を指定
クライアントID:アプリの登録の画面に表示されるクライアントIDを指定
資格情報の種類:シークレット を指定
シークレット:アプリの登録の画面で作成したシークレットを指定
だいたいの骨子はこんな感じです。
細かいところの確認とか、変数の定義とかを追加したりして、なんだかんだ半日くらいで結構簡単に稼働が始められ、煩わしい作業からも無事解放されましたとさ。めでたしめでたし。
さて、今回の記事は以上となります。それではまた。
この記事が気に入ったらサポートをしてみませんか?