Microsoft Fomsってすごく便利だなと思っていて、何が便利かと言うと、UI調整が一切必要ないというところに個人的に魅力を感じる。
さほど入力数がないUIを作る場合は、Power AppsよりFormsでいいんじゃないかな?と思っている今日この頃。
その上で、Microsoft Formsの回答結果をPower Automate経由でSharePointリストに入れ込むときに、Power Automateの関数が必要になるところがあったので、その内容まとめ
事前準備:Forms作成
- テキスト
- テキスト(整数)
- 日付
- テキスト(浮動小数点)
- オプション(その他あり)
- 評価
事前準備:SharePointリスト
- 1行テキスト
- 数値(整数)
- 日付と時刻
- 数値(小数点あり)
- 選択肢
- 数値(整数)
このリストへFormsの回答結果をPower Automate経由で入れていく。
事前準備:Power Automate
Forms → Power Automate → SharePointリストで使う関数
このテキストの値をSharePointリストに格納する際、その列に応じた型に変換してあげる必要がある。
Forms「テキスト」→SharePointリスト「1行テキスト」
Forms「テキスト」→SharePointリスト「数値(整数)」
続いて、FormsのテキストをSharePointリストの整数に変える場合は、int関数を使用する。
Forms「テキスト」→SharePointリスト「数値(小数点有り)」
小数点有りの場合はfloat関数を使用する。
Forms「日付」→SharePointリスト「日付と時刻」
Formsの「日付」回答結果を、SharePointリストの「日付と時刻」に入れたい場合は、formatDateTime関数を使用する。
Forms「オプション」→SharePointリスト「選択肢」
Formsの「オプション」回答結果を、SharePointリストの「選択肢」に入れる場合は、テキストに入れる場合と同様、何も意識せず動的なコンテンツを追加するだけでOK
ちなみに、「その他」オプションがある選択肢で、SharePointリストの選択肢に存在しない回答を入れても問題なく動く
Forms「評価」→SharePointリスト「数値(整数)」
最後、Formsの「評価」回答結果をSharePointリストの「数値(整数)」に入れる場合、「テキスト → 数値」と同様にint関数を使用する。
複数選択可能な質問
Formsの非必須項目(空白有り)の場合
Formsの回答には「必須」項目と「非必須」項目があって、「非必須」の時は回答結果として「空白」がPower Automateに飛んでくることがある。
これを回避するために、Formsの「非必須」回答項目を、SharePointリストの「数値」や「日付と時刻」に入れる際は、if関数をかませる必要がある。
if( empty(outputs('応答の詳細を取得する')?['body/r2cf09ac74d9b4a749b3e0c4d0c9a1ede']), null, int(outputs('応答の詳細を取得する')?['body/r2cf09ac74d9b4a749b3e0c4d0c9a1ede'])) )
if( empty(outputs('応答の詳細を取得する')?['body/r2cf09ac74d9b4a749b3e0c4d0c9a1ede']), null, formatDateTime(outputs('応答の詳細を取得する')?['body/r2cf09ac74d9b4a749b3e0c4d0c9a1ede'])) )
※式は見やすい用に改行しています。
※ちなみに、Formsの非必須項目をSharePointリストの「1行テキスト」列や「選択肢」列に入れるときは、これらの列が空白を受け入れることができるためif文は不要。
もちろん、SharePointリストの列に「入力必須」項目があると、このPower Automateはエラーを起こすが、そのときは第2引数の「null」を規定値に変えてあげれば、問題なく動作する。
コメント