

pieta
フォーラムの返信が作成されました
-
-
②>>①≒③
ぐらいの感じだと思います。
UI要素を使うのが基本で、要素が取得できない等の理由がある場合にのみキー送信か画像認識を使うというのが正しい手順と思います。
-
-
知恵袋の方でも回答しましたが、他のユーザーの参考になるかも知れないのでこちらでも回答しておきます。
「Web ページに次が含まれる場合」アクションでは多分無理ですが、Ifであれば以下の方法で可能です。
「Web ページ上の詳細を取得する」アクションで「取得」を“Webページテキスト”に設定
「If」アクションで「最初のオペランド」に例えば以下のように入力
%Contains(WebPageProperty, ‘キーワード1’) AND Contains(WebPageProperty, ‘キーワード2’) AND Contains(WebPageProperty, ‘キーワード3’)%「演算子」は“と等しい(=)”に設定、「2番目のオペランド」は“true”と入力
-
もしダウンロード前のフォルダにcsvファイルが1つも無いなら
ダウンロードの後に「フォルダー内のファイルを取得」アクションを入れて
ファイルフィルター欄を”*.csv”とすればcsvファイルだけ抽出出来ます。ダウンロード前のフォルダにcsvファイルが存在する場合
「フォルダー内のファイルを取得」アクションをダウンロード前後でそれぞれ設定し
「リストの内容を減らす」アクションを使えばダウンロードファイルだけ抽出出来ます。ただ、どちらもダウンロードが完了する前にファイル抽出処理が行われると思うので
「If」、「ラベル」、「移動先」アクションを組み合わせて
抽出リストが空の場合「フォルダー内のファイルを取得」に戻って処理を繰り返す、
というフローを追加する必要があります。添付画像参照最後に「ファイルの移動」アクションでファイルを移動させます。
*移動するファイル欄には抽出したファイルリストの変数を設定します -
詳細欄の「物理的にキー入力を行ってテキストを入力する」、「ページが読み込まれるまで待機」のON/OFFを切り替えると改善される場合があります。
改善されない場合は(余りスマートな方法では無いですが)「キーの送信」アクションや「クリックボード」アクションで入力する方法があります。
-
UI要素で指定できない、とのことですが、UI要素が取得出来ないという意味ですか?
ダイアログのボタンは「ウィンドウ内のボタンを押す」アクションか「ウィンドウのUI要素をクリック」アクションでないと認識しない(赤枠が表示されない)です。また、レコーダー機能かUI要素欄の「UI要素の追加」ボタンからでも取得出来ます。
もし上記の方法を試した上で駄目だったのであれば、「マウスを画像に移動」アクションでクリックするという方法があります。
-
UI要素の編集画面にあるテスト機能を使って確認してみては如何でしょうか?
正常に認識されているならUI要素の表示が間に合ってない可能性があります。
その場合「Webページのコンテンツを待機」アクションを入れれば対処出来ます。正常に認識されないならUI要素が変更されています。
-
*Qiitaの方の質問・コメントも見ました
複数のリンクを開くことが目的で、手段として「Webページからデータを抽出」アクションを使おうとしてるけど上手いこと行かずに困っている、ということですかね?
であれば添付画像のフローで処理出来ると思います。
*UI要素はページの一番上にあるリンクのUI要素を取得します
*UI要素の編集は以下
・編集画面を開き、全ての要素のチェックボタンをONにする
・セレクターに「id=”xx_251521″」のような設定が含まれている場合は、
id属性のチェックボタンをOFFにする
・最下層のセレクターのOrdinal属性のチェックボタンをONにする
→セレクターのプレビューに「:eq()」が追加される
・テキストエディターをONにする
・追加した「:eq()」の()の中にループカウンタ用の変数を設定する 例「:eq(%count%)」 -
設定の「監視/通知」を「フロー監視ウィンドウ」にしてフローを実行してみてください(添付1参照)。
「フロー監視ウィンドウ」が「ダウンロード中」→「準備中」→「実行中」と変化するので(添付2参照)、
それぞれの表示されている時間を確認し、どのタイミングで時間が掛かっているかを調べます。ダウンロード中で時間が掛かっているなら、通信環境やフローの容量が原因の可能性があります。
容量を下げる方法は、フローの見直し、UI要素欄の「使用していないUI要素を削除する」の実行等があります。準備中で時間が掛かっているなら、フローの容量やPCのスペック・相性が原因の可能性があります。
実行中で時間が掛かっているなら、最初のアクションに時間が掛かっています。
また、アクションを何も追加していない空のデスクトップフローを実行した場合でも待機時間が長い場合は
power automate desktopの再起動や再インストールで改善する可能性があります。 -
「Desktop フローを実行」アクションを用いているとのことなので、メインフロー、サブフローはそれぞれ親フロー、子フローのことだとして回答します。
(PADでは通常メインフロー、サブフローと言うと同じDesktopフロー内のタブで分けられたフローのことを指します)親フローでもOutlookの処理が必要で、且つ、子フローに分けないと駄目な理由があるなら今の処理方法で問題ないと思いますが、そうでないなら、Desktopフローを統一するか、親フローのインスタンス生成は無くして、閉じるアクションは子フローに入れるのが良いかと思います。
-
今のところ子フローの編集ウィンドウを開いていても親フロー上の処理は反映されない仕様です。
思いつく方法としては以下の2つがあります。
- 変数を「出力変数」に変更する
- 子フローの編集ウィンドウ右側にある「入出力変数」欄にリアルタイムで確認したい変数を設定(「フロー変数」欄にある変数とマージするかどうかの確認ウィンドウが表示される場合は「続行」を選択)
- 子フローを保存(保存しないと反映されない)
- 親フローの「Desktopフローを実行」アクションをダブルクリック
- アクションの編集画面に「生成された変数」欄が表示されるのでクリックして展開
- 有効/無効ボタンを有効にする
- 変数名を適宜変更
- 確認したいタイミングで「メッセージを表示」アクションを追加して確認する
- 変数を「出力変数」に変更する
-
解決策では無いですが、
・特定のWEBページだけで発生するのか
・Chrome等でも発生するのか
・フローを新規で作り直しても発生するのか
・別PCで処理しても発生するのか辺りを調べれば対策が見つかるかも知れません。
試しにChatGPTで調べてみたら、以下のような回答でした。
参考までに。Power Automate Desktop (PAD) で「Webページ内のテキストフィールドに入力する」アクションを使用した際に、スクリプトのような文字列が保存されてしまう原因として、以下のようなことが考えられます。
原因
1. 入力モードの問題
PADは通常、指定したテキストをDOM(Document Object Model)に直接操作して入力しますが、対象のフィールドが特殊なスクリプトやライブラリ(例: React.js, Angular, Vue.js)で制御されている場合、入力値が正常に反映されないことがあります。この場合、テキストボックスが内部的に認識している値と見た目が異なる場合があります。
2. スクリプトの影響
入力フィールドが動的にスタイルやスクリプトを埋め込む仕様になっている可能性があります。その結果、入力値と一緒にスタイルやスクリプトが保存されてしまうことがあります。
3. HTML構造の問題
指定した入力フィールドが複数の要素(例えば、隠しフィールドやスクリプト付きの入力フィールド)に依存している可能性があります。そのため、期待する値とは異なるデータが入力や保存時に扱われている可能性があります。
対策
1. キー送信を使用
テキストフィールドに直接入力する代わりに、「キーを送信する」アクションを試してください。この方法では、人間がキーボードで入力するのと同様の動作をシミュレートするため、より正確に動作することがあります。
手順:
- 「Webページ内のテキストフィールドに入力する」アクションを削除。
- 「キーを送信する」アクションを追加し、テキストを入力対象のフィールドに送信。
2. JSスクリプトを実行
Webページに対してJavaScriptを直接実行して、DOM要素を正確に操作する方法を試してください。「JavaScriptコードを実行する」アクションを使用して、対象のフィールドにテキストを設定するコードを記述します。
例:
document.querySelector(‘セレクター’).value = ‘入力したいテキスト’;
※
セレクター
には対象のフィールドのCSSセレクターを指定してください。3.フィールドの検証とセレクターの見直し
開発者ツール(ブラウザのF12)を使用して、対象のテキストフィールドの構造を確認してください。隠しフィールドや関連するスクリプトの影響を特定し、正しい要素を選択できているか見直してください。
4. 入力後の「Enterキー送信」や「再フォーカス」
入力後に適切に値が反映されるように、次のアクションを試してください:
- 入力後に「Enterキーを送信する」。
- 入力フィールドを再フォーカスする。
5.適切な遅延時間の設定
動的なWebページでは、スクリプトが遅れて動作することがあります。アクションの間に数秒の遅延を設定して、Webページが正しく処理を終えるのを待つ方法も有効です。
-
解決済み、とのことですが参考までに。
恐らく、ISO,JIS規格に準じているのだと思います。
ISO,JIS規格では数値の丸めの際「偶数丸め」というルールを採用しています。
「偶数丸め」とは
5の一つ上の位が偶数なら切り捨て、奇数なら切り上げる
というルールです。具体的には、0.5,2.5,4.5,6.5,8.5はそれぞれ0,2,4,6,8となり
1.5,3.5,5.5,7.5,9.5はそれぞれ2,4,6,8,10となります。
ですので、単純な四捨五入にするには、5の場合は(四捨五入する桁に)5を足す
という処理が追加で必要となります。https://ja.wikipedia.org/wiki/端数処理
*偶数への丸めの項参照 -
-
-
1つ目の添付画像のようなデータがリスト形式で格納されているという認識で回答します。
元の抽出リスト内のテキストを置換するより、新しくリストを作る方が楽だと思うので
2つ目の添付画像のフローでどうでしょうか?もし上手く処理できない場合、回答の際、1つ目の添付画像のように
TATさんがWebから抽出したデータの変数の値を画像添付してもらえると助かります。↓2つ目の添付画像のコードです(変数”WebData”はWebから抽出したリストの変数に要変更)
<div>Variables.CreateNewList List=> NewList
</div>LOOP FOREACH CurrentItem IN WebData
Text.Replace Text: CurrentItem TextToFind: $”’投稿時間:”’ IsRegEx: False IgnoreCase: False ReplaceWith: $”’%”%”’ ActivateEscapeSequences: False Result=> Replaced
Text.ConvertDateTimeToText.FromDateTime DateTime: Replaced StandardFormat: Text.WellKnownDateTimeFormat.ShortDate Result=> FormattedDateTime
Variables.AddItemToList Item: FormattedDateTime List: NewList
END
-
こんにちは
おっしゃる通りFor eachアクションを使います。
基本的な使い方は以下のサイトに記載していますので最初に一読することをお勧めします。https://learn.microsoft.com/ja-jp/power-automate/desktop-flows/use-loops#for-each-loop
For eachアクション内の「{x}ボタン」をクリックして
エクセルから取得したデータテーブルの変数を選択します。
(名称を変えてなければ)%ExcelData%という変数名だと思います。また、For eachアクションで新しく%CurrentItem%という変数が設定されます。
For eachアクションの処理をスタートさせると
まず%ExcelData%内の一行目のデータが%CurrentItem%に格納されます。使い方は%CurrentItem[0]%のように[]の中に列インデックスを記入します。
*インデックスは0からスタートします
なので、%CurrentItem[0]%なら製品番号、%CurrentItem[1]%なら製品名
という感じです。For each内のアクションの処理が完了するとFor eachの一番上に戻り
今度は%ExcelData%の2行目のデータが%CurrentItem%に格納され処理が繰り返されます。質問のタイトルがFor eachについてだったのでUI要素の取得方法や設定方法については
割愛していますが、不明点あれば追加で質問してください。参考になれば幸いです。
-
こんにちは
もしかしたら以下の動画内の”たな”さんという方の発表内容が参考になるかも知れません。
15分30秒辺りから容量の説明が有ります。
*私自身はライセンス等について詳しくないので参考にならない回答でしたらすみません。
-
-
こんにちは
回答になってないですが、私も先日同様の現象が発生しました。
一旦セレクターを取り直したんですが、数日経つと取り直したセレクターが使えなくなり
元のセレクターが使えるように戻ってました。とりあえず、今は同じUI要素に3つのセレクターを設定して対応しています。
例
:desktop > window[Process=”chrome”]
:desktop > pane[Process=”chrome”]
:desktop > [Process=”chrome”] ←これはテキストエディターで設定タイミング的にVer2.47にアップデートした後だったような気がするので、それが原因なのかも?
-
こんにちは
毎回20~30秒かかるのであれば長い印象ですが、
各ステータスの時間はどれぐらいでしょうか?また、何もアクションを登録していない空フローを実行した場合の時間は如何でしょうか?
私もYmotさんと同じ意見で、PCのスペックでは改善しないような気がします。
-
こんにちは。
Ymotさんが書かれてる通り、ループを使う場合は変数をリスト型にする必要があります。
尚、「変数の設定」アクション(「新しいリストの作成」アクションではありません)で以下の例ように記載すれば直接リスト型として格納出来ます。
%[‘検索キー1′,’検索キー2′,’検索キー3’]%
参考:https://qiita.com/sys_zero/items/82951049466791b2b728
ただ、200項目ともなると、保守のし易さ的にはエクセルに検索キーのリストを保存しておいて、「Excelの起動」→「Excelワークシートから読み取る」アクションでリストを取得する方がベターな気がします。
-
「名前~」という表示が出るのは「名前の定義」で設定されている名前が重複しているか
参照エラー(#REF!)になっているからと考えられます。対処法は
エクセルファイルA,Bを開き、「数式」タブ内の「名前の管理」をクリックして
それぞれのファイルで登録されている名前の一覧を確認
値が“#REF!”になっている名前があれば全て削除
削除しても構わないと分かる名前も削除
同じ名称の名前がある場合は別の名前に変更(ファイルAとBで同じ名称の場合も含む)
ファイルを上書き保存これでも表示が出る場合は非表示の名前が設定されている可能性があります。
「エクセル 非表示の名前 表示する」等のキーワードでネット検索すれば
表示方法が分かるかと思うので、名前を表示させた上で再度上記の対処法を実施してください。リンクについては詳細が分からないので何とも言えないです。
他の良い方法について
検討済みかもしれませんが、
個人的にはシートをコピーするのではなく「データの取得」(パワークエリ)でデータを取得するか
最初から一つのエクセルファイルに統合する方がトラブルにならないとは思います。 -
-
-
こんにちは
コミュニティフォーラムに同様の書き込みがあったのを思い出しました。以下URL参照
Verを変えたら解決した人もいれば何もしていないのに戻った人もいるようです。
原因はハッキリしないですが、私達だけじゃないことから、いずれ対処されると思います(希望的観測)。参考になれば幸いです
-
そうですか、、、
そうなると対策は
・拡張機能の再インストール
・Edgeブラウザーに変更する
・(2)-②をアクション「Webページに移動」に変更してURLでダウンロード用の画面を開く
・(2)-③,④をアクション「マウスを画像に移動」等に変更してダウンロードボタンをクリックする
原因を追究する場合は
・ウィンドウがフォアグラウンドになっているか確認するため、(2)-③の前で一度処理を停止する
・待機時間を変えてみて、エラーの発生するタイミングが処理経過時間なのか処理の繰り返し回数なのかランダムなのか確認する
・フローを二つに分けずに一つで処理する
思いつくのはこれぐらいです。 お役に立てれば幸いです。