Power Automate Desktopで仕入ExcelをWeb基幹システムに自動登録する方法

  • URLをコピーしました!
目次

🎯 目的

  • 毎朝メールで届く 仕入.xlsx に記載された仕入データを読み込み
  • 基幹システムの Web登録フォームへ1件ずつ自動入力・登録
  • 登録が完了した行には「処理済み」フラグを書き戻す
  • 途中でエラーが発生しても、次回実行時に途中から再開可能

🔄 自動化の全体フロー

[1] Excel(仕入.xlsx)を読み込む
 ↓
[2] 各行をループ処理
   ├─ 「処理済み」でない行だけ対象
   ├─ 商品コード・数量・仕入先をWebに入力
   ├─ 登録ボタン押下
   ├─ 完了確認 → Excelに「処理済み」と書き戻し
   └─ エラー時はログ記録+次の行へスキップ
 ↓
[3] 完了時にExcelを保存して閉じる

📁 フォルダ構成(おすすめ)

PurchaseRegisterBot/
├─ main_flow.padx
├─ modules/
│   ├─ RegisterOneRow.padx      ← 1行分の登録処理
│   └─ Utilities/
│       ├─ WriteFlagToExcel.padx
│       └─ WriteErrorLog.padx
├─ data/
│   ├─ 仕入.xlsx                ← 元データ(メールから保存)
│   ├─ error_log.csv           ← エラーログ
├─ config.json                 ← 設定値(URLや待機時間など)

📄 仕入.xlsx(サンプル構成)

商品コード数量仕入先処理済み
A12310田中商事
B4565山田商会
C7893鈴木物産

🧠 重要ポイントまとめ

要素実装方針
未処理行のみ処理「処理済み」列が空の行だけ抽出
登録フォームへのWeb入力商品コード・数量・仕入先をセレクタ指定で入力
処理済み書き戻し成功時にExcelへ「済」などのフラグを書き込む
例外処理Try-Catchで囲み、ログに記録+次の行へ継続
途中再開「処理済み」フラグが書かれている行をスキップする設計

🛠 PADフロー作成ステップ(完全解説)


✅ STEP1:Excel(仕入.xlsx)を読み込む

アクション:

  • 「Excelを起動」
  • 「Excelワークシートからデータを読み取る(閉じたブックでも可)」
  • 出力変数:PurchaseList

🔁 STEP2:各行をループ処理(未処理のみ)

アクション:For Each
対象:%PurchaseList%
現在の項目:CurrentRow

条件分岐:

If CurrentRow["処理済み"] ≠ "済"
→ 登録処理へ
Else
→ スキップ

🧾 STEP3:RegisterOneRow.padxを呼び出し

引数:

  • 商品コード:%CurrentRow[“商品コード”]%
  • 数量:%CurrentRow[“数量”]%
  • 仕入先:%CurrentRow[“仕入先”]%
  • 行番号:%CurrentIndex%

処理内容:

  1. 基幹システムのWebページを起動 or アクティブ化
  2. 入力欄に商品コード・数量・仕入先を入力(DOMセレクタ使用)
  3. 登録ボタンをクリック
  4. 「登録完了メッセージ」が表示されるまで待機

✅ STEP4:処理済みフラグの書き戻し(WriteFlagToExcel.padx)

アクション:

  • 「Excelワークシートのセルに値を設定」
  • 対象セル:"D" & (CurrentIndex + 2)
    (※ヘッダーが1行ある場合)
  • 値:"済"

❌ STEP5:エラー時のログ記録(WriteErrorLog.padx)

Try-Catchの設計:

  • RegisterOneRowをTryで囲む
  • Catch時には以下を記録:
日時,商品コード,エラー内容
2025/09/11 09:05,A123,登録ボタンが見つかりません

アクション:

  • 現在の日時 → Now
  • 「CSVファイルに追記」

📦 STEP6:Excelファイルを保存・閉じる

  • 「Excelファイルを保存」
  • 「Excelを閉じる」

⚙️ セレクタ例(Web入力フォーム)

項目セレクタ例
商品コード欄input[name='itemCode']
数量欄input[name='quantity']
仕入先欄select[name='supplier'] または入力欄
登録ボタンbutton[aria-label='登録']
完了メッセージdiv[class*='success-message']

📋 テスト手順(5分で確認)

  1. 仕入.xlsx にテストデータを3件ほど入れる(2件未処理+1件済)
  2. 該当のWebシステムにログインしておく(事前に手動ログインしておく)
  3. フローを実行
  4. 入力フォームに転記されるかを確認
  5. 処理済みフラグがExcelに書き戻されているか確認
  6. わざとセレクタを壊してエラー処理の確認も実施

✅ 応用・強化のアイデア

機能実装方法
メール添付からの自動保存Outlook自動処理と連携(件名フィルター+添付DL)
エラー時にスクショ保存「画面のスクリーンショットを取得」アクション追加
処理対象日でフィルター当日分のみ処理したい場合、日付列を追加+条件分岐
Slack通知エラー発生時にSlackで通知(Web投稿 or API)

❓ よくある質問(FAQ)


Q1. なぜExcelを閉じた状態で読み込む?

A. 実行中に人が触ることを避けるため。閉じたブックの方が安全で高速です。


Q2. 途中から再開できますか?

A. はい。"処理済み"列をチェックして、空欄の行だけ処理するため、途中で止まっても次回は自動で続きから再開できます。


Q3. Webシステムのセッション切れ対策は?

A. 実行前に手動ログイン+セッション維持を推奨。ログイン画面検出時に再起動するような分岐を入れるのも可。


Q4. 処理順を変えることはできる?

A. Excel側の並び順を並べ替えればOKです。PADフロー側は上から順に処理します。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次