rksoftware

Visual Studio とか C# とかが好きです

Power Automate で条件で処理を分岐する

■ 連載目次記事

Power Automate のフローを組んで行きます。

■ 前回の進捗

前回で Twitter コネクタを使ってツイートを取得するところまで来ました。

■ 今回の概要

Tweet は通常のツイートとリツイートでデータが変わります。この変化に分岐を使用して対応します。

■ 全体ゴール

連載のゴールの様子です。

■ 「コントロール」 コネクタの 「条件」 をアクションを追加

2022/08/30 現在、挙動が変わって null の時はエラーになるようになっています。信じていたのに......。
回避案として length(string(item()?['OriginalTweet/TweetId'])) を設定してください。

次の 1 つのステップを追加します。

コネクタ アクション ステップの名前
コントロール 条件 length(item()?['OriginalTweet/TweetId']) 次の値より大きい 0 直ツイートか RT かを評価 - 本文と ID を記録する

こんな感じの部分です。

■ ステップの追加

ステップの追加をします。

[ + 新しいステップ ] をクリックします。

検索枠に 「 条件 」と入力し、[ 組み込み ] をクリック、[ 条件 ] をクリックします。

前述の表の内容で条件を入力します。

これでツイートが通常のツイートかリツイートかで条件分岐できます。

■ length 関数について

今回使った length 関数は文字列の文字数が得られる関数です。大事な挙動として、文字列が null の場合に 0 を返してくれます 。これが仕様なのかはドキュメントに記述がありませんでした。この先もずっとそう動くかは不明ですが、今は信じて使うしかありません。
2022/08/30 現在、挙動が変わって null の時はエラーになるようになっています。信じていたのに......。
回避案として length(string(item()?['OriginalTweet/TweetId'])) を設定してください。

IsNullOrEmpty または IsNullOrWhiteSpace 関数を使うべきでは?

読んでくださっている皆様そう思われるでしょう。当然の疑問です。私もそう思います。しかし無念なことにそういった関数は見つけられませんでした。なので古式ゆかしい length での評価を行っています。

■ 評価の意図について

Twitter 検索の結果にはツイートの内容が入る場所が二つあります。普通に投稿したツイートとリツイートしたリツイート元が入る場所です。データによって参照するデータの場所が変わるので、そのデータが普通のツイートなのかリツイートなのかを評価しています。
今回の処理では item()?['OriginalTweet/TweetId'] を評価しています。OriginalTweet がリツイート元のツイートのデータです。ここにツイートの ID があればリツイートという評価をしています。

■ 条件の分岐の はい と いいえ それぞれで変数に値を設定

条件分岐ができました。はいの場合はリツイート元のツイートのテキストと ID を、いいえの場合は通常のツイートのテキストと ID を変数に設定します。

はい の場合

コネクタ アクション 名前 ステップの名前
変数 変数の設定 tweet ツイートの検索 の 元ツイートのテキスト tweet 本文を記憶 (RT 元)
変数 配列変数に追加 result ツイートの検索 の 元ツイート ID tweet の ID を結果配列に追加 (RT 元)

いいえ の場合

コネクタ アクション 名前 ステップの名前
変数 変数の設定 tweet ツイートの検索 の ツイートテキスト tweet 本文を記憶 (直ツイート)
変数 配列変数に追加 result ツイートの検索 の ツイート ID tweet の ID を結果配列に追加 (直ツイート)

こんな感じです。

■ 簡単ですね

簡単ですね。