質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Power Automate Desktop

Power Automate Desktopとは、Microsoft Power Automateの一つ。Windows上で行うキーボードやマウス操作などの組み合わせをコードなしで自動化できます。さらにPythonスクリプトの実行やAI機能連携を始め、機能も豊富です。

Q&A

1回答

284閲覧

Power Autmate for DesctopのExcel操作中のエラー解決

azu-jugg

総合スコア2

Power Automate Desktop

Power Automate Desktopとは、Microsoft Power Automateの一つ。Windows上で行うキーボードやマウス操作などの組み合わせをコードなしで自動化できます。さらにPythonスクリプトの実行やAI機能連携を始め、機能も豊富です。

0グッド

0クリップ

投稿2024/02/09 19:04

編集2024/02/10 07:29

実現したいこと

Power Autmate for Desctopで下記流れを実現したい。

「Windowsの詳細を取得する」
ウィンドウ appmask < UI要素「販売明細」を含む実行中のExcelデータ
ウィンドウプロパティ ウィンドウタイトルを取得
(変数⇒WindowsProperty)

「実行中のExcelに添付する」
ドキュメント名「%WindowsProperty%」
Excelインスタンスに保存

前提

PADを利用してチケット販売webサイトから自動的にチケット販売状況CSVを取得しデータをコピペするシステムを組もうとしています。
上記流れの途中で、下記エラーが毎回発生しています。
※なおExcelデータ名は「〇〇〇〇販売明細」です。(〇はcsv出力日時が毎回入る)

発生している問題・エラーメッセージ

Excelドキュメント'〇〇〇〇販売明細 - Excel'が見つかりません。

1~18 チケット販売管理者サイトを開いてログインし、予約リストページに進み
CSV出力ボタンを押下、Excelが開いたらページを閉じる
19 「Windowsの詳細を取得する」
ウィンドウ appmask < UI要素「販売明細」を含む実行中のExcelデータ
ウィンドウプロパティ ウィンドウタイトルを取得
(変数⇒WindowsProperty)
20 「実行中のExcelに添付する」
ドキュメント名「%WindowsProperty%」
Excelインスタンスに保存
21 Excelの全セルをコピー
23 管理用のスプレッドシートを開く

該当のソースコード

イメージ説明
イメージ説明
イメージ説明

試したこと

実行中のExcelに添付のドキュメント名を'WindowProperty'からダウンロードしたCSVファイルそのままの名前('〇〇〇〇販売明細')にすると問題なく動きます。
しかし、ダウンロードする毎に名称が変わるファイルを扱いたいため、このままでは使えません。
エラーメッセージが「'〇〇〇〇販売明細 - Excel'が見つかりません。」のため、
「 - Excel」の部分が余計なのかとは思いますが、どうしてもこれを取り除くことができません。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2024/02/10 01:48 編集

「ウィンドウの詳細を取得する」の内容の詳細が不明です(「ウィンドウの詳細を取得する」のフローは「ウィンドウ」と言う項目を指定することが必須のはずですが、「ウィンドウ」には何を指定しているのでしょうか。) 全体のフローがわからないことには誰も答えようがないと思います。 たとえ「こうではないか」と推測して回答できたとしても、実際にあなたが使っているフローに組み込んだときに、質問に明記されていない前後のフローが影響してうまくいかない、ということも往々にしてあります(つまり回答が無駄になるということです)そもそもPowerAutomateDesktopはソースコードをそのまま貼り付ければ試せるというものではなく、フローを回答者の手元で組んでみなければ試せない上、推測のための余計なコストを掛けさせていることになります。 なので、質問の際は全体のフローの画像キャプチャと各フローの設定内容を質問欄に明記してください。
meg_

2024/02/10 03:50

> (〇はcsv出力日時が毎回入る) ファイル名のルールが決まっているならファイル名を特定できないのでしょうか?
azu-jugg

2024/02/10 07:24

写真を追加しました。 ファイル名には必ず「販売明細」の文字が入るため、UI要素セレクターをいじって 「販売明細」の文字を含むデータをとるようにしています。
guest

回答1

0

まず、準備として、販売明細のcsvをChromeから手動でダウンロードして、ダウンロード履歴をクリックし、Excelでcsvファイルが開かれた状態にしておいてください。(csvのファイル名に販売明細という文字が含まれていればよく、日付はなんでもいいです)
(要するに、Power Automateでcsvファイルを自動的にダウンロードしてExcelで開かれたのと同じ状態まで、手動で持っていっておくということです)
(画像はダミーデータになっています)

イメージ説明

質問画像の18の「Webブラウザーを閉じる」の後ろに、以下のフローを追加します。

19. ウィンドウの取得

イメージ説明

[設定]
「UI要素」コンボboxの右の「v」をクリックして、ペインを出し、一番下の3つ並んでいるボタンから。右端の「UI要素の追加」をクリックします。
イメージ説明

UI要素取得のダイアログが現れます。さきほど立ち上げておいた販売明細.csvのウィンドウの左上端までマウスを持って行くと、左上に「Window」という文字が現れるので、この状態でキーボードのControlキーを押しながら左クリックします。
イメージ説明

販売明細csvのウィンドウをUI要素として選択した後の「UI要素を取得」フローの設定内容は下のようになります。

イメージ説明

UI要素 「appmask > Window '20240206販売明細.csv - Excel'」の部分は違う文字列になっているかもしれませんが、特に問題ありません。(次の設定で使うのでこの名前を覚えておいてください)

「保存」ボタンをクリックします。

UI要素の選択を書き換える

メインウィンドウに戻ったら、右端にあるボタンのうち、真ん中のひし形が3つ重なったマークをクリックします。
イメージ説明


現在のフローが持っているUI要素の一覧が表示されます。
この中でさっき「手順19.」で選択したUI要素である「appmask > Window '20240206販売明細.csv - Excel'」(違う文字列の場合は覚えておいた文字列)を右クリックして編集をクリックします。 

イメージ説明


UI要素「 Window '20240206販売明細.csv - Excel'のセレクター」ウィンドウが現れます。
イメージ説明

この中で Nameの行に関して

  • 演算子を「と等しい」から「含む」に変更
  • 値を「販売明細」に変更

(これにより、このUI要素経由で、ウィンドウタイトルに「販売明細」を含むEXCELのウィンドウを選択できるようになります)

保存ボタンをクリック

20. ウィンドウの詳細を取得する

アクション「ウィンドウの詳細を追加する」を追加します。

イメージ説明

[設定]
全般→「ウィンドウ」コンボボックスの右端をクリックして、表示されたペインから、さきほどNameを書き換えたUI要素(画像では「Window '20240206販売明細.csv - Excel'」)を選択します。

イメージ説明

設定後の全体は下の図になります。

イメージ説明

  • ウィンドウ:さきほどNameを書き換えたUI要素名(画像では「appmask > Window '20240206販売明細.csv - Excel'」)
  • ウィンドウプロパティ:「ウィンドウタイトルを取得する」
  • 生成された変数:「WindowProperty」

これにより「WindowProperty」に、前のフローでダウンロードしてExcelで開いた販売明細csvファイルが入るはずですので、後は同じアクションを行えばよいと思います。

(上の画像や実際にやった場合に、UI要素名のなかに日付が入っていますが、これはあくまでUI要素を区別するための名前にすぎません。上の設定で条件を「含む」「販売明細」に設定変更していれば、その条件に合うように販売明細と言う文字列を含むEXCELのウィンドウが選択されるはずです。名前に一致するウィンドウだけが選択されることにはなりません。違和感があるなら、ひし形が3つ並んだマークから名前を変更することも可能です。ただし設定後のUI要素の名前を変更すると、後続のフローで設定されているUI要素も一から選択しなおさないといけなくなるので注意してください)

上記をすべて追加した後の16以降のフローイメージは下の図になります(16~18、21以降は質問と同じ。あくまでイメージなので完全に一致しないかもしれませんがそこは臨機応変に変えてください)
イメージ説明


こんな簡単なことを実現/説明するのさえ、無茶苦茶手間がかかります。
Power Automateの面倒くささ、お分かりになったでしょうか。仕事では絶対使いたくありませんね。

投稿2024/02/10 11:55

編集2024/02/10 11:56
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azu-jugg

2024/02/10 14:48

申し訳ありませんがほぼ最初にやっていたことでした。。。 19番のウィンドウ取得以外は、「UI要素「販売明細」を含む」なども含めてすべてやっており、また提案通りにウィンドウ取得のアクションを追加しても全く同じところで止まりました。
退会済みユーザー

退会済みユーザー

2024/02/10 23:00 編集

こちらでは、サイトは違いますが(gettiのアカウントまで用意できないので)、同様のcsvをダウンロードさせるサイトでうまく動いています。 本当に「含める」に設定を変えたUI要素を指定していますか?また変数名等で不整合があったりしませんか? 処理が速すぎてうまく取れていない可能性を考えて、ウェイトを1秒ずつはさんでみてはどうでしょうか。 PowerAutomateDesktopは、基本的にソースコードでプログラムを記述することができないし、共有もできないので、どこに設定の違いがあって動きが違うのかを他人に伝える/他人が知るのは非常に難しいです。 これ以上解決しない場合、PowerAutomateDesktopの動作はダウンロードまでにしてそれ以降をVBAで処理するか ダウンロード動作を含めてSelenium(python)を使うことをお薦めします。
azu-jugg

2024/02/10 17:02

元質問文に書いていた通りやったことはあらかじめ書いております。↓ 1~18 チケット販売管理者サイトを開いてログインし、予約リストページに進み CSV出力ボタンを押下、Excelが開いたらページを閉じる 19 「Windowsの詳細を取得する」 ウィンドウ appmask < UI要素「販売明細」を含む実行中のExcelデータ ウィンドウプロパティ ウィンドウタイトルを取得 (変数⇒WindowsProperty) 20 「実行中のExcelに添付する」 ドキュメント名「%WindowsProperty%」 Excelインスタンスに保存 21 Excelの全セルをコピー 23 管理用のスプレッドシートを開く
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問