7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Automate Desktop開発 Tips

Last updated at Posted at 2024-08-09

概要

Power Automate Desktop開発で詰まりやすい事象の解決に役立つTipsを記してあります。

変数

  • 変数名はパーセント記号(%)で囲む必要がありますが、算術演算子(+,-,×,÷)・比較演算子(=,<>,>,<)・論理演算子(Index,StartsWith,EndsWith)等を使用した数式内で変数を使用する場合は%で囲む必要はありません


  • Power Automate Desktopでは、アクションによって変数が自動生成されます
    例えば、[Excelワークシートから最初の空の列や行を取得]アクションでは、FirstFreeColumnとFirstFreeRowという2つの変数が自動生成されます。

    しかし、FreeFirstRow変数はフロー上で使用しません。そのような場合、使用しない変数をオフにすることでフローデザイナーのフロー変数から非表示にすることができます。

UIオートメーション

ウィンドウ

  • Power Automate Desktopに限らず、RPAで自動化を組み込む場合、ウィンドウサイズを最大化に設定することを推奨します。
    理由として、画面上のボタンやテキストボックス等はウィンドウサイズや表示倍率の変更にともない、表示位置が変わる可能性があるからです。レコーディング時に指定した検索範囲内に検索対象のUI要素が存在しなくなると、RPAが認識できなくなりエラーとなってしまいます。

    • デスクトップアプリの場合、[ウィンドウの状態の設定]で設定する

    • ブラウザの場合、各ブラウザ起動のアクションで設定する

データ抽出

  • 以下エラー「○○に失敗しました(ウィンドウを取得できません)」の対処方法
    ウィンドウを取得するためのセレクターに問題がある、ということになるので、ウィンドウのUI要素を修正します。
    ※Webページの場合、ブラウザインスタンスで操作対象のブラウザ(タブやウィンドウ)を判断するので気にしなくてOK。

  • 以下エラー「○○に失敗しました(UI要素を取得できません)」の対処方法
    カスタムセレクターのClassもしくはIdにランダム値が入っている場合はチェックを外す。
    また、特定の要素を取得できない場合は、eq演算子を使用して取得する要素を指定します。詳細はこちらの記事を参考にしてください。
    他の参考記事:Power Automate Desktop (UI要素エラー):UI要素が見つかりません

HTTP

  • [Webサービスを呼び出します]アクションでは、外部APIと連携して多種多様な業務プロセスを自動化して効率化できます。外部APIを利用することで、複雑なロジックを自前で組む必要がなくなり、開発プロセスが大幅に簡略化されます。これにより、時間や労力、コストを節約しつつ、高機能で信頼性の高いシステムを構築できます。ただし、利用規約・HTTPS/CORS対応・APIの正確性などを精査した上で使用しましょう

    例:現在の日付が祝日であるかを判定するフロー
  1. クエリに現在の日付を渡してAPIを叩いて、JSON形式でレスポンスを取得する
    APIドキュメント:https://national-holidays.jp/api.html

  2. JSONをカスタムオブジェクトに変換し、国民の祝日であるかどうかを判定する

ブラウザー自動化

  • [WebページでJavaScript関数を実行]アクションでは、標準的なアクション操作では対応しきれない場合に、ページの動作や内容を柔軟に制御するために非常に有用です。このアクションを利用することで、動的なページや複雑なWebアプリケーションに対しても、自動化スクリプトを効果的に実装できます。

    例:休日・祝日を考慮した翌営業日を取得するフロー
  1. [Webサービスを呼び出します]で今年と来年の祝日リストを取得する
    APIドキュメント:https://national-holidays.jp/api.html

  2. ブラウザを起動する ※ブラウザはChrome以外のIE,Edgeでも可能

  3. [WebページでJavaScript関数を実行]で祝日リストを元に翌営業日を計算する

  4. ブラウザを閉じる

JSのサンプルコード
function ExecuteScript() {

const holidays = %WebServiceResponse%
const datesOnly = holidays.map(holiday => holiday.date);

// 祝日かどうかを確認する関数
function isHoliday(date) {
  const formattedDate = date.toISOString().split('T')[0];
  return datesOnly.includes(formattedDate);
}

// 翌営業日を取得する関数
function getNextBusinessDay(date) {
  let nextDay = new Date(date);
  nextDay.setDate(nextDay.getDate() + 1); // 翌日へ

  // 翌日が土日または祝日である限りループ
  while (nextDay.getDay() === 0 || nextDay.getDay() === 6 || isHoliday(nextDay)) {
    nextDay.setDate(nextDay.getDate() + 1);
  }

  return nextDay;
}

// new Date()の引数に現在の日付を渡す
const inputDate = new Date('%FormattedDateTime%');
const nextBusinessDay = getNextBusinessDay(inputDate);

// 翌営業日を返す
return nextBusinessDay.toISOString().split('T')[0];

}

[WebページでJavaScript関数を実行]アクションにおける返り値が [Object Object] になる場合は、JSON.stringify()もしくはtoString()を使用して文字列に変換する。

マウスとキーボード

  • マウス操作の自動化はウィンドウサイズ等や表示倍率にともなって、表示位置が変わりクリック位置もずれてしまうことでエラーが起こりやすいです。そのため、マウス操作ではなく、[キーの送信]アクションを使用して、キーボード操作やショートカットキー操作での自動化を推奨します。

参考記事

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?