Microsoft Forms を使えば、簡単に様々なフォームが作ることができます。
特に社外向けのアンケートや申請などは、Microsoft Forms 一択と言ってもよいかもしれません。
しかしながら、1点問題があるとすれば、社外からの添付ファイルを受け取ることができないということ。
Microsoft Forms では、社内メンバー向けであれば、添付ファイルを受け取ることができますが
社外も回答可能なフォームにした場合は、添付ファイルを受け取ることができなくなります。
特に申請フォームの場合、様々な添付書類もあると思いますが、そういったことが受け取れないため、Forms ちょっと使えないかもという判断にもなりがちです。
Microsoft MVP のやまさんが書いたこちらの記事
https://qiita.com/yamad365/items/b7a9fd865b905eb9165a
では、共有リンクを使用した解決策を提示されていますが
外部共有可能な共有リンクを開放していない企業だと、中々難しいかもしれません。
というわけで、私の場合はこういう構成にしてみました。
実際の動きはこのような感じです
申請後のフロー
管理IDを生成し、SharePoint Lists に転記した上で
添付ファイルを送信してもらうためのメールを作成し、相手に送付します。
※細かなフローの説明は割愛しています。
管理ID
guid()
guid 関数
を使って変数の初期化アクションに登録しています。
変数を使う理由は、 guid 関数
は、関数を使うたびに値が変わるためです。
メール文面と、SharePoint Lists で共通で用いるため、変数に格納しています。
メール送信
基本的に、こういうのは共有メールボックスから送信すると思いますので
それ前提でアクションを作っています。
後述の添付ファイル受け取り用に、件名に管理IDを以下のように付記しています。
【入場者申請システム】@{outputs('応答の詳細を取得する')?['body/入場者名']}様 申請書類送付願い 管理ID:@{variables('SessionID')}
添付ファイルメール受け取りフロー
メールが送信された後に、担当者がメールを受け取り、書類を添付して返信してもらうことで
フローが実行され、申請IDを読み取り、SharePoint Lists で該当のIDを検索後、添付ファイルをリストに追加するようにしています。
トリガー
これも共有メールボックスが前提で、かつ添付ファイルありが前提なので、このようにしています。
添付ファイルのみしか発火しません。
申請IDの取得
申請IDは、件名の末尾に指定しています。
これは、メールの仕様で、返信時は必ず冒頭に Re: がつくため、改変されるのと
取得しやすいように末尾にしています。
その際に
管理ID:guid()
と指定しているため、 split関数
で、:
を区切り文字にすれば、配列化して、最後のレコードを取得すれば、純粋なID値を取得することができます。
last(
split(
triggerOutputs()?['body/subject'],
':'
)
)
該当レコードの検索
IDが取得できれば、SharePoint Lists から該当レコードを検索するフィルタークエリを指定します。
添付ファイル追加
これで1件に絞ることができたので、添付ファイルを付けて終わりです。