実現しようとしているフローの概要
下記のようなSharepoint上にあるExcelテーブルを、
- PowerAutomateで整数列(B列)を一行ずつ読み取る。
- 6以上か否かを判断。
- 結果「6以上」または、「6より小さい」という文字列を結果(C列)に入力。
このようなフローを作りながら、値のデータ型の変換をやってみたいと思います。
##フローの作成
###1.PowerAutomateで整数列(B列)を一行ずつ読み取る。
先ず初めにフローの実行を開始するトリガーを設定します。
今回は、インスタントフローで手動でボタンをクリックしてフローを実行する方法に設定します。
次に、後続のフローで一行ずつ行を読み取るために、対象のテーブルを「表内に存在する行を一覧表示」という名前のアクションを使って取得します。
###2. 6以上か否かを判断。
ここから1行ずつB列の整数を取り出し条件分岐させます。
1行ずつ同じ処理を繰り返すので、アクションの選択から「コントロール」>「Apply_to_each」を選択し追加します。Apply_to_eachでは、中に入っているアクションが繰り返し処理されます。
繰り返し処理をする対象は先ほど取得したテーブルの一覧なので、「以前の手順から取得を選択」の箇所には、「動的なコンテンツの追加」から、「value」を設定します。
次に、設定したテーブルの整数列(B列)を判別して、1行ずつ条件処理を行っていくので、アクションの追加から「条件」を追加します。
条件の左辺には、テーブルの整数列(B列)から取得した値を設定します。「動的なコンテンツの取得」から、一つ前で読取ったテーブルの列名が表示されているので、「整数」(←テーブルのヘッダー名)を選択します。
条件を「次の値以上」
右辺には数字で6を設定します。
※この条件、現時点では、
左辺の「整数」にはテーブルから取得した文字列(String型)の値、
右辺の「6」は整数(Integer型)の値が入っています。
比較する値の型が違うことでエラーが発生してしましまいます。
後程、値の型変換方法を説明します。
###3. 結果「6以上」または、「6より小さい」という文字列を結果(C列)に入力。
それはさておき、先に、条件を満たす場合と満たさない場合にテーブルの結果列(C列)に結果を入力します。
アクションに「行の更新」を追加し、対象のテーブルをプルダウンから選択するとヘッダー名が出てきますので、「結果」の列に「6以上」「6より小さい」と入るように設定します。
###実行してみる。
案の定エラーが出ます。
原因は赤い部分。
エラーのメッセージには、「型が適合する2つのパラメータが必要です。関数呼び出しで指定された値は'String'型と'Integer型'で方が不適合です。」とあるように、左辺が文字列であることが分かります。
###文字列(String型)を整数型(Integer型)に変換する。
####①データ操作に値を取り込む
PowerAutomateから取得する値は全て文字列で取得されるため、SharepointのExcelで、PowerAutomateが参照するテーブルの列の値に整数が入力されていたとしても、PowerAutomateでは文字列(String型)で取得されるようです。
その為、数字の大小などで条件分岐させたい場合に文字列では判別できずエラーになってしまうのですね。(ちょっと面倒くさいなぁ)
仕方ないので、整数型に変換します。
Apply_to_eachの枠内で、アクションの追加から「データ操作」>「データ作成」を追加します。
「入力」欄には「動的なコンテンツの追加」から「整数」を選択します。この時点では、「整数」列の値をデータ作成に取り込んだだけでまだ中身はString型です。ちょっとわかりやすいように、データ操作アクションの名前を「整数値(String型)取得」と名前を変更しました。
名前の変更はアクションの右上端の「・・・」ボタンからできます。
####②取得した値を整数値化
次にまた同じアクション「データ作成」を追加します。
ここでは、動的なコンテンツではなく、「式」を直接入力します。
int() は中身のString型の値をInteger型に変換する関数。
outputs('整数値(String型)取得')は、前項のデータ作成で設定した値を指します。
アクションの名前もわかりやすいように、「整数値化(Integer型)」という名前に変更しておきました。
※int()の中にカーソルを入れた状態で、「動的なコンテンツ」のタブに移動すると、「出力」という形でプルダウンから値を選択できます♪
これで、String型をInteger型に変換できました!
####③フローの順序を整理
後は整数値化した値を条件式に使用するだけです。
その前にフローの順序を確認しておきましょう。
アクションをドラッグ&ドロップすると順序を変更できます。
整数値化した値を条件式内で使用するので、条件式が後になるように配置します。
####④条件式にInteger型の値を使用する
最後に左辺を「動的なコンテンツ」から「整数値化(Integer型)」の出力値を設定して完成です。