PowerAutomateで最初に知っておけばよかったこと
Microsoft Power Automate、フロー作成数が増えてくると、ある程度は思うように作れるようになってきました。最初にこれを聞いておけば・・!!と思うことがでてきました。これから使い始める方、ぜひ見てほしい。
なお、Windows環境で、PowerAutomate Desktopではなく、クラウド版(旧flow)の話になります。
テンプレートをちょこっと変えるだけのレベルから一歩進もうとすると、知っておきたかった内容です。
エラー状態だと保存できません
これはすぐ気づかれると思うんですよね、でも書いておきます。
時間がない、とりあえず保存!エラー。Undoで戻そうとしてもUndoなんてないし、Ctrl+Zもききません。そういうものなので、こまめに保存をおすすめします。
コネクタとアクションの検索(よく使うものは覚えておきましょう)
フローの作成を始めた、さあ「+新しいステップ」を作るぞ!!
でこの画面。
おおよそ何ができているか知っていないと、探しにくい、というかそもそもあるのかないのか、、でやたら時間がかかります。
表示されているアイコンも「コントロール」「Excel」あたりの7個だけで焦ります。
解決:「コネクタとアクションを検索する」検索ボックスを活用しましょう。
こちらで自分がよく入力している例
- 「SharePoint」SharePointリストからのアイテム検索や、アイテム更新、アイテム作成の時に。
- 「Teams」Teamsへの投稿を新たに作ったり、Teamsの投稿情報を取得したりなど。
- 「Office」Office 365のユーザー検索、ユーザー情報取得など。また、Office365 Outlookのメール送信アクションを見つけるときに。Office365 GroupsのHTTP要求を送信もたまに。
- 「変数」変数の初期化(定義のことです)や、変数の値を書き換えるときに。
- 「データ操作」ちょっとした動作確認時に、「作成」が便利。
環境や使い道によって異なるとは思いますが、どうやれば自分のよく使うアクションにたどり着けるのかは覚えておくのが吉です。
下手に「作成」とか「送信」といったキーワードで検索すると、恐ろしい数がヒットしますので注意。
もっと見る 押しましょう
上記画面右下に、しれっと表示されている 「もっと見る」 。ほしいアクションなどが隠れていることもよくありますので、見つからないときは使いましょう。
変数は、最初に定義
条件分岐や、ForEachアクションの中で変数を新しく定義(初期化)することはできません。最上位のみで使用できますというエラーがでますので。
トリガーされたすぐ次くらいのところで定義するとよいと思います。
「変数」→「変数を初期化」です。
変数名はわかりやすくしましょう。型を間違えないように。
上記画面の右上の 「・・・」で、名前の変更 で「変数Titleを初期化」などを書いておくと、後から変数名や、型(種類)を変えるときに探し回る手間が減りますね。クリックして開けばわかるので、やらなくてもいいですけど。
アクションの順番(位置)を変えるには
なかなかうまくいかないときがあるのですが、ドラッグアンドドロップで、プラスマークが出た瞬間に手を放す感じです。
動的なコンテンツの数式を見る・コピーする
動的なコンテンツの追加自体は、まあ結構素直にできると思うんです。ただ、その文字列をSplitしたい!とか、UATからJSTに加工したい!など、利用したい時がめんどくさい。
昔は、マウスをホバーして、必死に手で書き写してたんですが・・
大変でした。
素直に全部選択して(この例だと指アイコン、郵便番号、×を全部選択)右クリックコピー、あるいは、Ctrl+C で、
@{triggerBody()['location']['address']['postalCode']}
って入ってきます。
例えばこれをSplitしたいなら、先頭のアットマークと中かっこをはずせば再利用可能。
Split(triggerBody()['location']['address']['postalCode'],'-')
これは早く知りたかった。
#@をはずしてああしてこうしてなど処理が多いとか、数式が長くなる時は、自分はSakuraエディタなどに一度貼り付けて、いろいろ編集してからPowerAutomateに貼り付けてます。
数式の更新時には「更新」を押す
リターンを押して満足してしまうことがちょくちょくあるので、式を編集したら「更新」ボタンをお忘れなく。
とはいえ、なんだかうまく更新が保存されていないこともあるような気がするんですよね。更新のあと、一応マウスホバーで見たほうが安全。
条件分岐がうまくいかないときのデバック
条件分岐がうまく動作しないとき、PowerAutomateの「テスト」結果を見るだと、「はい」「いいえ」のどちらに分岐したかわかるだけなんですよね、、見にくい。
例えば 郵便番号が000-0000に一致しているかの分岐を組んでいるのに、なぜか いいえにしか行ってない、おかしいぞ、みたいなとき。
一時的に値がどう評価されているか(値に何が入っているか)見たい時などは、条件アクションに入る前に、データ操作 → 作成 で値をチェックすると「テスト」したときに結果が見えやすいです。デバッグが終わったら消しましょう。
デバッグのためにアクションを一時的に止めたい
Teams通知のアクションをOFFにしておきたい、みたいなときには、2種類方法があります。
その1)静的な結果(プレビュー)を使う
アクション単位で制御したい時にはこの方法です。「・・・」メニューから静的な結果を選んで、
トグルボタンを青くして、完了ボタン。
これにより、このアクションだけがスキップされます。黄色いフラスコマークが目印です。
2)途中から実行を全部止めたい。
長いフローを組んでいて、最初の部分の動作だけチェックしたい、みたいなときです。
「コントロール」→「終了」 アクションを入れておけば、その後ろは実行されません。
フロー作成後のアクション名変更には要注意
変数なら後続のアクションからアクセスするときに
variables('Title') などでアクセスしていると思うので大丈夫なのですが、
Apply to each アクションなどではまりがちな話です。
Apply to eachは、配列の要素ごとになにかを実行するときに使うのですが、各要素へのアクセスに
items(''Apply_to_each)
でアクセスしています。
ループをわかりやすくしたいなーと、上記のApply to eachアクションの「・・・」をクリックして名前を変更すると、ループ内の動作がことごとくエラーになるので、気を付けましょう。(自動的に変えてくれません)
オブジェクト内の要素へのアクセス
例えばSharePointのとあるリストのアイテム(項目)を取得した後、フィールドにアクセスしたいとします。
「SharePoint」→「複数の項目の取得」とかで要素をとってくることはできた。「answer」フィールドの文字列を取得したい。このレベルであれば、動的なコンテンツの追加 でうまく候補がでてきますが、複雑なケースだと自力で
outputs('項目の取得')?[body/answer]
のような式を書くことになるでしょう。
配列が返ってくると想定して、そのひとつめにアクセスするなら
outputs('項目の取得')[0]
のように記載するでしょうが、配列がNullの場合は上記ケースはエラーになって完全ストップしてしまいます。
返りがNullの時にエラーを防ぐためには、
outputs('項目の取得')?[0]
ハテナをいれましょう。
存在するかわからない要素へのアクセス時も同様で、
outputs('項目の取得')?['mail_list']
ハテナつき。これで大丈夫。
※Hiroさんのページにとてもお世話になりました。ありがとうございました。
参考になれば幸いです。