更新時だけBoxへログインするために、Teamsで最終更新日時が確認出来るようにしてみた。

#ログインからファイル確認までの意外とかかる手間をなくしたい。
小売業の人事で社内教育・採用を担当するチームで勤務をしています。
私のチームは十数名が所属しており、複数の拠点に分かれて各自が研修・説明会などを年中行っているため、互いの予定を確認したり店舗からの問い合わせ時に回答出来るようにするために、<B>「<a href="https://www.box.com/home">Box</a>に保存しているExcelの予定表へ各々の「出勤状況」「業務内容」「勤務場所」を登録する」</B>ことで、勤怠システムに登録出来ない情報を共有しています。
記載内容は事務所にあるホワイトボードへその他部署の方が見るために転記しているため、出勤者がファイル更新を不定期にチェックし、週ごとの書き換えや変更内容の反映をしています。
先日、<B>「せめて「更新があるか」だけでも分かると、見に行く回数も減らせるのに」という意見がメンバーとの会話の中で出てきました。</B>
![予定表見本.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/2d79b862-cc8b-02c9-74a2-4a6f4728cbdc.png)
この予定表、私が10年前に人事に居た時に作ったものが数回の異動を経て戻ってきてもまだ使われて続けていたので、随分大事に使われてたんだなと思いました。

#実現したいこと
- BOXにログインをしなくてもファイルの更新有無だけ取り敢えず分かるようにしたい。
- Integromatのことを直近で知ったので、これを利用して解決方法を考えたい。

#社内のセキュリティ問題が立ちはだかる
![目指したもの.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/552a73c3-2a5e-cd4e-9232-ecaf8e9bf1ad.png)![管理者の認証が必要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/cb8f094c-92be-b9d1-317e-37da4e49b14d.png)
連絡ツールにTeamsの利用をメンバーへ推奨しているため、Integromatで上記のように出来ればと試しましたが、社内のセキュリティの関係で外部との連携は管理者権限が必要と表示され、対応が出来ませんでした。
不便だけど、とても強固なセキュリティに守られて普段は仕事をしていることがよく分かりました。ただ、折角知ったサービスを使用したいという思いがあり、工程の不便さは一旦置いておき、今ある環境下で利用が出来る方法がないかを考えました。

#完成品
![Teams画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/8d8e740f-3f96-5c7d-80e0-c2e4f7743acd.png)
「社内で使用出来るツールで一番外部と繋げられそうなのがOutlook（メール）である」「メール経由で更新情報を取得出来ればTeamsとの連携も出来るのではないか」という仮説から、「Integromat⇒Gmail⇒Outlook⇒Power Autmate⇒Teams」という工程を試してみたところ、実施したかった表示がされました。

#使用したもの
- <a href="https://www.integromat.com/">Integromat<a>
- <a href="https://www.box.com/home">Box</a>
- <a href="https://mail.google.com/">Gmail</a>
- Outlook
- Power Automate
- Teams

#作業工程
「Integromatを使うこと」「セキュリティの問題は解決出来ないので、今自分が使えるもので、無理矢理にでも出来るようにする方法を考える」という視点で作成したので、かなり遠回りな手順を踏みます。

##1. Integromatで「BOXにあるExcelファイル（サンプルファイル.xlsx）の最終更新日時をGmailの本文へ入力・送信」というシナリオを作成。
![integromat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/5e14814e-1d87-a213-d500-66767bf5f2d3.png)
IFTTTの利用も検討しましたが、「BOXでファイルを更新された際」というトリガーが見つからなかったので、今回はIntegromatを使用しました。
また、セキュリティの問題でIntegromatとOutlookの連携も出来ないので、Outlookでの更新情報の取得のために、Gmailでワンクッション挟むことにしました。
![integromat2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/9b633282-3762-f704-9a35-e3ca84d6b16b.png)
GmailのContent（本文）の中に「ファイル更新日時」を挿入しようとしたところ、日本の時刻ではなかったため、こちらを参考にして作成しました。
【参考記事】
<a href="https://qiita.com/shoito66/items/afe62d2b1b2fe454c391">Integromatで日付を日本時間にする方法</a>

##2. Gmailで受信したメールをOutlookへ自動転送するようフィルターを設定。
「件名：更新案内」「自分のGmailアドレス」をフィルターとし、転送後は該当のメールは自動削除するようにしました。
![gmail到着分.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/6e33bfa7-1091-fdaf-4e15-c05167b91969.png)
![Gmail3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/4c676512-d594-d1a2-1ebb-a15870dedbbc.png)

##3. Outlookで受信専用のフォルダ（Teams用）を用意。
届いたメールをフォルダ「Teams用」へ振り分ける設定を行う。

##4. 「フォルダ「Teams用」にメールを受信したら、メール本文をTeamsへ投稿」というフローをPower Automateで作成。
![PA画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/98324987-ce69-8ba8-fd18-0ec384f0b04f.png)
①「Teams用」というフォルダへ届いたメールに対する実行であると設定。
②Teamsへ用意した「Team：稼働テスト」「Channel：BOX更新通知」へ「メール本文（IntegromatでGmailの設定をした文言）」を投稿すると設定。

#Teamsへの投稿内容
![Teams画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2490846/a7e1ae62-54dc-b2da-d0c6-b7582e007496.png)
8時～20時の間で4時間おきに最終更新日時を送信するようにIntegromatで設定しているため、勤務時間中に変更が確認された時だけログインをするという対応が出来るようになりました。

#完成物に対するメンバーの反応
- BOXへログインして更新状況を一々見に行かなくてもいいのはとても楽。
- 「誰が」か「どこを」書き換えたかまで分かると本当は便利。
- 便利だけど、そもそも他の方法で予定の管理をしてもいいのでは？（10年も使用したファイルの運用終了を嫌がる一定層をどうするかが一番の課題）

#今後に向けて
「そもそも全員がOutlookの予定表などを使えば万事解決する問題では？」と思わなくもないのですが、現状維持派を無視して押し切ることも中々出来ず、一案として今回作成しました。

冒頭の会話をした当日中にこのフローを作り、翌日にはTeamsの投稿内容を見せてメンバーへ意見を求めたので、「意外とTeamsって便利なんだね！他に何か出来ることないの？」と興味を持ってもらうことが出来ました。
試作品をすぐに作ったこと、見せた上で意見を求められたことで、聞き手が目的や効果を判断しやすい状況となったことは、私にとって小さいけど大事な一歩になったのではないかと感じました。