例えば、以下のようなシナリオを考える。
・特定の期限を持つ情報(特権アカウント、保守更新期限、ライセンス、アクセス権など)をもった社員をリストで管理
・定期的な棚卸(継続利用の確認有無)が必要
・リストには、対象の権限とそれに紐づく対象者の情報(名前とメールアドレス)、次回の棚卸日(有効期限など)を保持
このリストに対して、棚卸日(有効期限=ExpirationDate)になると対象者(User)に「期限になったから継続して利用するか確認してください」みたいなメールを送信したい。(期限になってから送信するのは遅いだろう、というのはひとまず置いておいて。そこは日付の処理でいかようにも出来るため)
Flowを作っていく中で、SharePoint Onlineのリストとの組み合わせで後々困ることになる(実際に困った)ことがあるため、リストを作成する前に注意しておかなければいけないことが1つ。
Flowの処理に利用したいリストの列の列名は、列の追加(作成)時に、半角英数字で作成しなければいけない。ここで日本語で列名を作成すると、Flowから対象列を読み取れず、実行時に以下のようなエラーになる。
(↓「有効期限」という列名に対してFlowを作った場合)
"status": 400,
"message": "列 '有効期限' が存在しません。他のユーザーが削除した可能性があります。
SharePointは表示上の列名と、内部的に持っている列名が別にあり、前者はあとからでいくらでも変えられるが、後者は変更が出来ない。Flowが読み取る列名は後者の内部的に持っている列名のため、最初に日本語で作成してしまうと機能しなくなるという罠にはまることになる。色々と調べると、内部的に持っている列名が日本語でもそれを示す文字列があるようで、それを確認し指定できれば動くのかもしれないが、私は試していない&先々のメンテナンス性が悪いためやりたいとは思えない。。
逆に、先に英語で列名を作ったあとに表示上の列名を日本語に変えるというのはありかもしれないが、これもやはりFlow上の列名と表示上の列名が異なるため、Flowのメンテナンス性は良くない気がする。あくまで作成者の手元で動かすことが前提になっているFlowであることを考えると、作成者が忘れなければ問題はないのかもしれない。
とはいえ、リストの作成者とFlowの作成者が一致というケースばかりではないはずだし、何年も運用されてきたリストに対して、これからFlowを作るケースもあるため、日本語列名で運用されている列が対象だと、運が悪いと思うしかないのかも。
とりあえず、以前のエントリと同じようにトリガーは「繰り返し」を使い、日本時間の指定時刻に日次で動くようにする。
次のアクションとして、SharePoint Onlineの「複数の項目の取得」を選択する。「サイトのアドレス」は、対象リストがあるサイトのURLを選択し、「リスト名」に対象リストを選ぶ。事前にリストを作成しているはずなので、それぞれプルダウンで表示されるはず。
次に「フィルタークエリ」に、リストの有効期限(列名:ExpirationDate)と今日の日付が一致したら、というフィルター条件を記載する。私は、以下のように記載。
ExpirationDate eq 'formatDateTime(getFutureTime(9, 'Hour'),'yyyy/MM/dd')'
シングルコーテーションの中(formatDateTime~)は、関数の式を使用。ちなみに、フィルターで複数条件(例えば他の列(列名例.ColumnA)の項目がhogeの場合)をAND条件で組み合わせるのであれば、以下のように書くことで条件に合致したリスト行に対してのみ後続のアクションが実行できるようになる。
ExpirationDate eq 'formatDateTime(getFutureTime(9, 'Hour'),'yyyy/MM/dd')' and ColumnA eq 'hoge'
次に抽出されたリスト行の対象者(User)にメールを送信するために、次のアクションとして「Apply to each」を選択する。ここで「以前の手順から出力を選択」の欄に、前の処理で抽出したリスト行の情報を受け渡すために、動的なコンテンツから「value(アイテムの一覧)」を選択する。
そしてOutlookの「メールの送信」アクションを選ぶ。「宛先」の欄に、動的なコンテンツからSharePointの対象者のメールアドレスと紐づく項目を選択する。SharePoint Onlineのリストにメールアドレスを平文で記載しているの列があるのであれば、その列名を選ぶ。AADとリンクしているユーザアカウントが列に登録されているのであれば「User(ここは列名) Email」を選択すると問題ない。あとは件名や本文をそれっぽく作る。
以上で、日次でリストをチェックし、有効期限に到来した日にその対象者にメールを送信することが出来るようになった。
自動でメールを送信するだけでもそれなりに工数削減に繋がる気もするが、今回の目的から考えると、メールを受信した側が、メール内のリンク(例えば「継続」「不要」)を押すだけで、その結果が戻ってきて、SharePoint Onlineのリストを更新してくれるくらいまでは作りこめると、より楽な運用に繋がりそうなので、次はその仕組みを考えてみようと思っている。
Lucky Club - Live Casino Site - LuckyClub.live
返信削除Lucky Club is a luckyclub.live brand new online casino brand, now launched in 2017 and offers a massive selection of slots and live dealer games. LuckyClub