目次
🎯 目的
- 毎朝メールで届く
仕入.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(サンプル構成)
| 商品コード | 数量 | 仕入先 | 処理済み |
|---|---|---|---|
| A123 | 10 | 田中商事 | |
| B456 | 5 | 山田商会 | |
| C789 | 3 | 鈴木物産 | 済 |
🧠 重要ポイントまとめ
| 要素 | 実装方針 |
|---|---|
| 未処理行のみ処理 | 「処理済み」列が空の行だけ抽出 |
| 登録フォームへの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%
処理内容:
- 基幹システムのWebページを起動 or アクティブ化
- 入力欄に商品コード・数量・仕入先を入力(DOMセレクタ使用)
- 登録ボタンをクリック
- 「登録完了メッセージ」が表示されるまで待機
✅ 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分で確認)
仕入.xlsxにテストデータを3件ほど入れる(2件未処理+1件済)- 該当のWebシステムにログインしておく(事前に手動ログインしておく)
- フローを実行
- 入力フォームに転記されるかを確認
- 処理済みフラグがExcelに書き戻されているか確認
- わざとセレクタを壊してエラー処理の確認も実施
✅ 応用・強化のアイデア
| 機能 | 実装方法 |
|---|---|
| メール添付からの自動保存 | Outlook自動処理と連携(件名フィルター+添付DL) |
| エラー時にスクショ保存 | 「画面のスクリーンショットを取得」アクション追加 |
| 処理対象日でフィルター | 当日分のみ処理したい場合、日付列を追加+条件分岐 |
| Slack通知 | エラー発生時にSlackで通知(Web投稿 or API) |
❓ よくある質問(FAQ)
Q1. なぜExcelを閉じた状態で読み込む?
A. 実行中に人が触ることを避けるため。閉じたブックの方が安全で高速です。
Q2. 途中から再開できますか?
A. はい。"処理済み"列をチェックして、空欄の行だけ処理するため、途中で止まっても次回は自動で続きから再開できます。
Q3. Webシステムのセッション切れ対策は?
A. 実行前に手動ログイン+セッション維持を推奨。ログイン画面検出時に再起動するような分岐を入れるのも可。
Q4. 処理順を変えることはできる?
A. Excel側の並び順を並べ替えればOKです。PADフロー側は上から順に処理します。
