Power Automate / SharePoint のメモ
■ SharePointのファイルの取得(プロパティのみ)
これで得られるフルパスは、https:から始まるパスではなく、ファイルの取得で指定したライブラリ名からのパスのようです。
Microsoft365 E3では、フィルタークエリにstartswith(Title,'A')が使えないようです。出力に"Title"が出ません。開発者プログラムのMicrosoft365 E5では、出力に"Title"が出るので、startswith(Title,'A')が使用できます。(2023/03/31時点)
設定の改ページをオンにしてしきい値に大きな数値を設定しているときに、上から順に取得に数値を設定しても、その数で出力が制限されないようです。設定のしきい値の数の出力数になるようです。(2023/03/31時点)
フルパスはURLに使用できない文字(例:"#",",","&"など)もデコードされて取得されるのですが、このフルパスをSharePointのリストのハイパーリンクに入れると、ブラウザがエンコードできず、リンク切れになります。また、ライブラリのフォルダ作成アクションでは、URLに使用できない文字がエンコードされず、エラーになります。手動だとURLに使用できないフォルダ名も作成できます。URLのコードの自動変換に一貫性が無いようです。
■ SharePointの複数の項目の取得のフィルター クエリの文字列変数
文字列変数の比較をするときは文字列変数を''で括る必要がありそうです。
■ SharePointのハイパーリンク項目の作成
項目の作成でハイパーリンクに空白文字を入れようとするとエラーになります。nullならエラーになりません。
if(empty(items('Apply_to_each')?['URL']),null,items('Apply_to_each')?['URL'])
ExcelのデータをSharePointのリストのハイパーリンクに書き込む場合、Excel側はテキストで良いようです。Excelでハイパーリンクが設定されていても表示文字が使用されると思います? なので、表示文字がURLである必要があると思います?
日付も空白文字だとエラーになるようです。nullならエラーにならないようです。
if(empty(items('Apply_to_each')?['Date']), null, items('Apply_to_each')?['Date'])
■ SharePointのファイルの取得 (プロパティのみ)で取得したLink
SharePointのファイルの取得 (プロパティのみ)で取得したLink をSharePointのリストのハイパーリンクに書き込むとエラーになります。入力データを直接ブラウザに入れるとLinkは正しいのですが、原因不明です。
items('Apply_to_each')?['{Link}']はError
サイトアドレスとFullPathを結合すると書き込めます。
concat(variables('SiteAddr'),'/',items('Apply_to_each_Folder')?['{FullPath}'])はOK
■ SharePointのサイトやリスト名を変数で設定
SharePointの項目の更新などでサイトのアドレスやリスト名を動的に変数で与えると、Power Automateのデザイナーがリストの項目を取得できなくなります。下記方法でOKな時とNGの時があり、正しい方法が良く分かりません。
1) 実態のサイト名やリスト名などを設定し、項目を設定する。(関数を書くときはFxに書く。Fxだと動的な値の選択肢にbodyやvalueやApply to eachの現在の値しか出ないので、?['xxx']で項目を書き加える。)
2) 生成されたJSONをコピーし、メモ帳に貼り付け、不要な部分を削除しする。(Power Automateの編集画面の項目やFxに貼って編集するのはNG。)
"parameters": {
"item/Title": "@replace(items('Apply_to_each')?['Title'],decodeUriComponent('%0B',''),items('Apply_to_each')?['Title'])",
"item/Date": "@if(empty(items('Apply_to_each')?['Date']),null,items('Apply_to_each')?['Date'])",
"item/Dep": "@variables('Dep')"
},
3) "@を{、"を}に置換し、"item/Title"になっていたら、item/を消す。
{
"Title": @{replace(items('Apply_to_each')?['Title'],decodeUriComponent('%0B',''),items('Apply_to_each')?['Title'])},
"Date": @{if(empty(items('Apply_to_each')?['Date']), null, items('Apply_to_each')?['Date'])},
"Dep": @{variables('Dep')}
}
4) サイト名やリスト名をカスタム値=変数に戻す。
5) 項目にメモ帳で編集したJSONを貼り付ける。
6) 右辺の動的な値や式はエディタの機能で選択しなおした方が良いかもしれない。選択肢に動的な値が出ない場合は、式の編集画面で「現在のアイテム」など親を選び、?['xxx']を追加する。
■ Excelの「表内に存在する行を一覧表示」のフィルタークエリ
単一の 'eq'、'ne'、'contains'、'startswith'、'endswith' のみがサポートされているそうです。(2023/03/21時点)
■ アクションの名前の変更は最初に行う
アクションを作成したときに変更したほうが良いです。
後にアクションのパラメータを参照する式を書き、その後にアクションの名前を変えると、参照式が元のアクション名のままなのでエラーになります。
名前を後から変更したときに、Enterを押しても名前が確定できない場合は、Escキーを押すと確定できます。変更した名前を参照している部分は自動的には変わらないので、手動で修正が必要です。
■ Do Untilループ内のエラー
Do Untilなどのループ内でエラーが起きると、Do Untilの終了条件に影響するアクションがスキップされ、無限ループになることがあります。
1) 終了条件に影響するアクションをエラーでも実行するように実行条件の構成を変更する。
2) 実行条件の構成をエラー時にした並列処理を追加して、ループを抜ける条件を設定するアクションを追加する。
■ Power Automateの実行回数制限
https://learn.microsoft.com/ja-jp/power-automate/limits-and-config
Microsoft365だと"低"なのでかなり少ないです。
無限ループを放っておくと回数を無駄に消費するので、実行履歴画面の右上のキャンセルをクリックして強制終了します。
データの移行など一時的に多くのデータを取り扱う場合は、処理レコード数をカウントし、1日の制限に掛かる前に処理IDや処理数を保存してから終了し、翌日続きから実行するなどの処理が必要です。
Microsoft E3の制限は10Kアクション/日ですが、1~7割程度のオーバーでは止まらないようです。ExcelのテーブルをSharePointのリストにコピーするフローの実行時間は30分/日くらいでした。
■ テストの10分タイムオーバー表示
10分のタイムオーバーが表示されても止まっていないようです。なので、無限ループになっている疑いがある場合は、キャンセルしたほうが良さそうです。
■ テスト実行直後のアクションの出力のダウンロード
テスト実行直後はアクションの出力が表示されずダウンロードのリンクが表示されます。これをクリックすると生データが表示されます。Firefoxでは内蔵されているJSONの表示機能で、JSON、生データ、ヘッダーの3つのタブが表示され、JSONでは折り畳みや展開表示ができるので便利です。Edgeの場合はアドオンが必要ですが、FirefoxのJSON表示機能のようなアドオンを発見できてません。
■ 2023/03/21の仕様変更?
SharePointの複数の項目の取得でリスト名などを変数で設定すると、変数名が表示されず、「カスタム値」と表示されるようになり、変数名が分からなくなりました。編集画面で確認する必要があります。
値の設定などで式の入力エディタから選んで(例:true)式を入力してアクションに戻ると、表示がUndefined(...)とかvariable(...)などの表示になり中身が分からなくなります。保存したり再編集すると正しくなります。
式の編集部分の行数が増えました。(ここにPower Fxのように複数の処理を書けるともっと良いのですが。設定だけでなく、アクションもコードで書けた方が条件が複雑になったとき横に広がらず読みやすいと思うのですが?)
Fxの中から選べる動的な値の選択肢が増えました。これは便利です。
■ アクションの検索言語
「Power Automate を使用してシーケンシャル承認を管理する」を試そうと思ったのですが、get managerでGet manager (V2)/Office 365 Usersが表示されません。
https://learn.microsoft.com/ja-jp/power-automate/sequential-modern-approvals
上司で検索すると表示されました。英語のmanagerですね。
ワークフローニーズが多いのですが、連続承認、並列承認、質問、回答、却下、修正依頼、再承認依頼、配信のみ、承認ルートの選択、承認者の選択、等処理が複雑なので、Microsft365で作るのは難しそうです。
■ 余談
Power Platformは初心者用の書籍や情報が少ないです。Microsoft Learnは機械翻訳で分かりにくいし、クラウドフローにはアクションのリファレンスがありません。SharePointは「戻り値:この操作の出力は状況に応じて変わります。」としか書いていないものがあり、初心者には意味不明です。
Power Platformではデータソースを変数で与えることが難しいので、データソースの切り替えが難しいです。なのでデータソースを分割することが難しく、データソースが大きくなり、クラウドの負荷が増える、という印象があります。
※ 当方はIT関係者でもプログラマでも無いMS-Officeアプリユーザーですので、間違いがあると思います。





最近のコメント