くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【PowerAutomate】フローを順番に実行したい!並列処理を制御する

はじめに

こんにちは、くらっちです。
今回はPowerAutomateで1つのフローを順番に実行する設定を紹介します。
PowerAutomateで作成したフローはデフォルトの状態だとトリガーが起動した直後に処理が開始されるため、同じフローが同時に複数実行される場合があります。(並列処理)


しかし、それだと「前のフローが終わった後に、次のフローを実行したい」という場合に不都合です。
そんな時の設定が「コンカレンシーの制御」です。

目次

コンカレンシーの制御

「コンカレンシーの制御」は、同時に実行するフローの数(次数)を制御するものです。
次数を2にしたらこのフローは2個まで同時に実行できます。
次数を100にするとこのフローは100個同時に実行できます。
ということはこの次数を1にすれば、フローを1個ずつ実行させることができるのです。

設定の手順

設定の手順は簡単4ステップです。

1.トリガーをクリックして設定を表示
2.「コンカレンシーの制御」項目が「オフ」になっていたら「オン」にする
3.「並列処理の次数」を1にすること
4.保存して完了



あっという間にできちゃいますね。
ぜひ、PowerAutomateを遊んで試してみてください。

この記事が気に入った、参考になったという場合は評価して頂けるとすごく励みになります!
最後まで読んでいただいてありがとうございました。

【PowerApps】編集画面の選択肢もSharePointリストを使おう!

はじめに

こんにちは、くらっちです。
先日「新規作成画面の選択肢には別のリストを使おう!」という内容の記事を書いたので、今回はその続きで「編集画面の選択肢には別のリストを使おう!」という記事を書きました。
同じ選択肢を複数回使う場合などに有効だと思います。

kurattyodiary.hatenablog.com

目次

選択肢用のリストを作成するメリット

前回と同じ内容ですが再掲。
選択肢用のリストを作成するメリットとして以下のことが考えられます。
1.選択肢の管理が簡単
2.参照値列の上限を回避できる
3.別用途でも使いまわせる

SharePointで選択肢用のリストを用意する

新規作成画面の時と同じ選択肢用のリストを使用します。

選択した値を保存する際は1行テキストを使え!

選択した値を保存するSharePointリストを用意します。
選択した値を保存する列は必ず「1行テキスト」にしてください。
理由は、別リストから選択した値を正常に登録させるためです。

編集画面にコンボボックスを追加する

下記手順に従い、コンボボックスを追加してください。


1.編集画面で「DataCardValue○」をクリックする。
2.「Visible」を false にして、DataCardValue○ を非表示にする。


3.「DataCard」内に ComboBox を追加する。
4.「Items」に [@選択肢リスト].Title と入力する。
5.複数選択させない場合は「SelectMultiple」を false にする。
6.「DefaultSelectedItems」に下記コードを入力する。

Filter([@選択肢リスト],タイトル=DataCardValue3.Text)


7.「DataCard」をクリックする。
8.「Update」に ComboBox〇.Selected.タイトル と入力することでコンボボックスで選択した値をSharePointに登録します。
 ※同じDataCard内のコンボボックスを選択すること。

【PowerApps】コンボボックスの選択肢は別リストを使うのがオススメ!

はじめに

こんにちは、くらっちです。
PowerAppsでアプリを作っていると、選択肢項目が必要な場面って多いですよね。
データベースにSharePointリストを利用しているのであれば選択肢列を使えばいいのですが、同じ選択肢を複数項目で用意したい場合は管理が大変です。
参照値列は1リストで使えるのが12個までという制限があるし、ちょっと避けたい。
そんなときは、SharePointに選択肢用の別リストを作りましょう!
今回は新規作成画面での実装方法について解説します。

目次

選択肢用のリストを作成するメリット

選択肢用のリストを作成するメリットとして以下のことが考えられます。
1.選択肢の管理が簡単
2.参照値列の上限を回避できる
3.別用途でも使いまわせる

SharePointで選択肢用のリストを作成する

最初に、選択肢用のリストを作成しましょう。
選択肢を管理するためのリストを新規作成して「タイトル列」に選択肢を入力します。

選択した値を保存する際は1行テキストを使え!

次に、選択した値を保存するSharePointリストです。
選択した値を保存する列は必ず「1行テキスト」にしてください。
理由は、別リストから選択した値を正常に登録させるためです。

PowerAppsでコンボボックスを追加する

事前準備はできました。ここからPowerAppsアプリ側の手順を説明します。

1.「DataCardValue○」をクリックします。
2.「Visible」を false にして「DataCardValue○」を非表示にします。

3.DataCard内にComboBoxを追加します。
4.「Items」に [@選択肢リスト].タイトル を入力します。
5.複数選択させない場合は「SelectMultiple」を false にしてください。

コンボボックスで選択した値をリストに登録する

最後に、SubmitFormで選択した値をリストに保存するための操作を行います。

6.ComboBox 追加した DataCard をクリックします。
7.「Update」に [ComboBox1.Selected.タイトル] と入力してコンボボックスで選択した値をSharePointリストに登録します。


今回は新規作成画面における手順を解説しました。
編集画面も同じように選択肢の設定にはコツが必要です。
編集画面の手順は下記リンクからどうぞ。

kurattyodiary.hatenablog.com


【PowerAutomate】トリガー起動条件の書き方講座

はじめに

例えば、PowerAutomateトリガーにSharePointの「項目が作成されたとき」を使うけど「特定の条件の時のみ項目を作成したい」のようにトリガーを起動する条件を設定したい場合ありませんか?
今回は、トリガーに起動条件を設定する方法と記載方法について述べたいと思います。

目次

注意事項

この記事はクラウドフローを対象にしています。

起動条件を設定する

下記手順に従って起動条件を設定してください。
1.トリガーの「…」>「設定」をクリックする。

2.「トリガーの条件」にトリガーの起動条件式を入力します。
「+追加」をクリックすることで複数の条件を設定可能です。
「+追加」で追加した条件は「And条件」となりますのでご注意ください。
3.条件設定後、「完了」をクリックします。

条件式を作成する

上記で「トリガーの条件設定方法」については分かりましたが肝心の条件式の書き方がわからないと意味がありません。
ここでは簡単に条件式を作成する方法を伝授します!

大体は「アレイのフィルター処理」を使えばいい!!

最も簡単な条件式の作成方法はPowerAutomateに作ってもらうことです。
「アレイのフィルター処理」アクションを使って、条件式を作ってもらいましょう。

1.「アレイのフィルター処理」アクションを追加します。

2.下図赤枠内で条件式を作成します。
3.「詳細設定モードで編集」をクリックして、2の条件式をコード化します。

4.コード化された条件をコピーして、トリガーの設定画面に登録します。

条件記載 例

トリガー起動条件の記載例は以下を参考にしてください。
条件式はコピペで利用できます。
Title と Price は、SharePointリストに追加した列の内部名です。

contains(A,B)

A に B が含まれる場合 を表す。

例:Title に テスト が含まれる場合
@contains(triggerOutputs()?['body/Title'], 'テスト')

not(contains(A,B))

A に B が含まれていない場合 を表す。

例:Title に テスト が含まれていない場合
@not(contains(triggerOutputs()?['body/Title'], 'テスト'))

equals(A,B)

A が B と等しい場合 を表す。

例:Title が テスト と等しい場合
@equals(triggerOutputs()?['body/Title'], 'テスト')

not(equals(A,B))

A が B と等しくない場合 を表す。

例:Title が テスト と等しくない場合
@not(equals(triggerOutputs()?['body/Title'], 'テスト'))

empty(A)

A の値が 空 の場合 を表す。

例:Title の値が 空 の場合
@empty(triggerOutputs()?['body/Title'])

not(empty(A))

A の値が 空 ではない場合 を表す。

例:Title の値が 空 ではない場合
@not(empty(triggerOutputs()?['body/Title']))

greater(A,B)

A より B が大きい場合 を表す。

例:Price より 100 が大きい場合
@greater(triggerOutputs()?['body/Price'], 100)

greaterOrEquals(A,B)

A が B 以上の場合 を表す。

例:Price が 200 以上場合
@greaterOrEquals(triggerOutputs()?['body/Price'], 200)

less(A,B)

A が B 未満の場合 を表す。

例:Price が 1000 未満の場合
@less(triggerOutputs()?['body/Price'], 1000)

lessOrEquals(A,B)

A が B 以下の場合 を表す。

例:Price が 500 以下の場合
@lessOrEquals(triggerOutputs()?['body/Price'], 500)

startsWith(A,B)

A が B から始まる場合 を表す。

例:Title が 【会議】から始まる場合
@startsWith(triggerOutputs()?['body/Title'], '【会議】')

not(startsWith(A,B))

A が B から始まらない場合 を表す。

例:Title が 【会議】から始まらない場合
@not(startsWith(triggerOutputs()?['body/Title'], '【会議】'))

endswith(A,B)

A が B で終わる場合 を表す。

例:Title が  で終わる場合
@endswith(triggerOutputs()?['body/Title'], '【会議】')

not(endswith(A,B))

A が B で終わらない場合 を表す。

例:Title が  で終わらない場合
@not(endswith(triggerOutputs()?['body/Title'], '【会議】'))

and(A,B)

A かつ B の場合 を表す。

例:「Title に テスト が含まれる」かつ「Price が 500 以下」の場合
@and(
 contains(triggerOutputs()?['body/Title'], 'テスト'),
 lessOrEquals(triggerOutputs()?['body/Price'], 500)
)

or(A,B)

A または B の場合 を表す。

例:「Title に【会議】が含まれる」または「Price が 2000 以上」の場合
@or(
 contains(triggerOutputs()?['body/Title'], '【会議】'),
 greaterOrEquals(triggerOutputs()?['body/Price'], 2000)
)

参考

クラウド フローのトリガー条件を設定してトリガーの実行を制御する方法 | Japan Dynamics CRM & Power Platform Support Blog

Power Automate のトリガー条件を使ってOutlookを色んな条件でトリガーさせる方法。 - Qiita

式関数のリファレンス ガイド - Azure Logic Apps | Microsoft Learn

【PowerAutomate】文字列検索にはコレがおすすめ!

はじめに

PowerAutomate で「文字列に指定の文字列が含まれている場合」を条件分岐として使いたいということありませんか?
・メール件名に【お知らせ】という文字が含まれていた場合、条件分岐でTrueにしたい
SharePoint のタイトル列に【重要】という文字が含まれていた場合、条件分岐でTrueにしたい
など。

そんな時は「テキストの位置の検索」アクションを使うと便利です!!

目次

「テキストの位置の検索」アクション

「テキストの位置の検索」アクションは、「検索テキスト」が「テキスト」のどこに含まれているかをチェックしてテキストの位置を数値で返すアクションです。

返される値は下記例を参考にしてください。

例:テキスト「こんにちは、今日はいい天気ですね。」

検索テキスト =「こんにちは」 ※検索対象が先頭にある場合
戻り値 = 0

検索テキスト =「今日」の場合 ※検索対象が7文字目にある場合
戻り値 = 6

検索テキスト =「Hello」の場合 ※検索対象が存在しない場合
戻り値 = -1

文字が含まれている、いないで条件分岐

上記例からわかるように「検索文字が含まれている場合は0以上が返されて、検索文字が含まれない場合は -1が返される」ので、これを条件にします。

実装は下図のようなイメージです。
「本文 次の値以上 0」とすることで、検索文字が含まれている場合は「はい」に移動します。

検索文字が2カ所以上に存在する場合

テキストに検索対象の文字が2カ所以上存在していた場合は、最初の位置のみ返されますのでご注意ください。

【PowerAutomate】SharePoint上のフォルダを自動削除しよう

はじめに

SharePoint のアクションには「ファイルの削除」「フォルダの作成」アクションはあるのに「フォルダの削除」アクションがありません。
「ファイルの削除」アクションでフォルダ削除もできるのでは?と思いますが、残念ながらこれも不可です。
「フォルダの削除」アクションはありませんが、他の方法で削除することができたので今回ご紹介したいと思います。

目次

SharePoint に HTTP 要求を送信します

結論として「SharePoint に HTTP 要求を送信します」アクションを利用することでフォルダ削除ができます。
下図を参考にアクションの設定を行ってください。

下図フローは、SharePointサイト内の「サンプルライブラリ」にファイルが作成されたときにファイル作成場所にある「一時フォルダ」フォルダを削除します。


SharePoint に HTTP 要求を送信します」アクションの「方法」に「DELETE」を設定します。
「尿(URI)」には下記URI を記入してください。
<削除フォルダのPath>には、ドキュメントライブラリからのPathが入力されるようにします。
<削除フォルダのPath>で指定されたフォルダが削除されます。

URI ⇒
_api/web/GetFolderByServerRelativeUrl('<削除フォルダのPath>')

URIの記載例 ⇒
_api/web/GetFolderByServerRelativeUrl('DocLib/テストその3/一時フォルダ')

実行結果

処理を実行すると下図のようにドキュメントライブラリ内の対象フォルダがきれいさっぱりと削除されました。

注意事項

・フォルダを削除するとき、フォルダ内のファイルも削除されます。
・フォルダ内のファイルを誰かが掴んでいる場合、フォルダ削除ができません。
・フォルダ削除時、確認ダイアログは表示されません。
・削除したフォルダは、サイトのゴミ箱に移動します。

皆さんの PowerAutomate 活用の一助となれたらうれしいです。 もし参考になりましたら お気に入り登録などして頂けると今後の励みとなりとても喜びます。

【PowerAutomate】【Length関数】件数に応じた条件分岐をさせる方法

はじめに

「フォルダ内に0ファイル or 1ファイル以上で処理を分岐させたい」 のように、PowerAutomate でアイテム件数やファイル件数に応じて条件分岐をさせたい場合ってありますよね。
今回はその悩みを解決する方法をご紹介します。

目次

Length関数を利用する

PowerAutomate で件数による条件分岐を行う場合は「Length関数」を使います。

例として下図フローを作成しました。
SharePointリストから「ステータス = 申請中」のアイテムを取得して、結果0件の場合は「はい」、1件以上の場合は「いいえ」に分岐します。


「変数の設定」では、「複数の項目の取得」アクションの Value を length関数 囲って変数「length」に設定します。
これで「複数の項目の取得」アクションの 実行結果を 件数 として取得できるようになりました。


変数「length」を使って条件分岐を行います。
下図では、length関数の結果 = 0件だった場合「はい」に分岐します。


今回の例では、SharePointリストに「ステータス = 申請中」のアイテムが1件あったので結果「いいえ」のルートに進んでいきました。


皆さんの PowerAutomate 活用の一助となれたらうれしいです。
もし参考になりましたら いいねなどして頂けると今後の励みとなりとても喜びます。