目次
🎯 目的
- 各店舗が提出する売上Excel(
sales.xlsx)を読み込む - 店舗コード・売上金額を、管理Web画面へ自動入力して登録
- 登録が完了した行には、Excel上に「登録済み」フラグを書き戻す
- エラー発生時も、フラグでスキップして再実行が可能
📁 ファイル構成(推奨)
StoreSalesUploader/
├─ main_flow.padx
├─ modules/
│ ├─ ReadExcelSales.padx ← Excel読み込み
│ ├─ InputToWebForm.padx ← Webへの自動入力
│ ├─ WriteFlagToExcel.padx ← 登録済みフラグの書き込み
├─ data/
│ └─ sales.xlsx ← 店舗別売上データ(入力元)
├─ logs/
│ └─ log.csv ← 実行ログ(任意)
📄 sales.xlsx(データ形式)
| 店舗コード | 売上金額 | 登録状況 |
|---|---|---|
| A001 | 124000 | |
| A002 | 98000 | 登録済み |
| A003 | 113000 |
登録状況列が 空欄の行のみ処理対象- 登録成功後に「登録済み」と記入
🔁 全体フロー概要
[1] Excelから未登録データを読み込み
↓
[2] 店舗ごとにWebフォームへ自動入力
↓
[3] 登録成功時にExcelへ「登録済み」フラグ
↓
[4] ログ出力(任意)
🛠 ステップバイステップ構築手順
✅ STEP1:Excelから売上データを読み込む(ReadExcelSales.padx)
使用アクション:
Excelの起動(可視/不可視選択)Excelワークシートからデータを読み取りFor Eachで行ループ
条件付きループ(登録済み以外):
条件:currentRow["登録状況"] が 空白なら 処理対象
→ 出力変数:StoreCode, Amount
✅ STEP2:Web画面へ自動入力(InputToWebForm.padx)
1. Chromeで管理画面を起動
chrome.exe --profile-directory="Profile 1" https://example.com/admin/sales
2. フォーム入力
| 項目 | UIセレクタ例 | 値 |
|---|---|---|
| 店舗コード | input[name="store_code"] | %StoreCode% |
| 売上金額 | input[name="amount"] | %Amount% |
| 保存ボタン | button[text()="登録"] | クリック |
3. 成功確認(「登録完了」などのラベル表示を待機)
- UI要素の有無 or テキスト出現で判定
- タイムアウト時は例外処理で
次の店舗へスキップ
✅ STEP3:Excelへ「登録済み」フラグを記入(WriteFlagToExcel.padx)
処理内容:
- 対象行の「登録状況」列に
登録済みを書き込み Excelワークシートにセルを書き込み
補足:
currentRowIndexなどで行番号を取得して、対象セル指定
✅ オプション:処理ログの記録(logs/log.csv)
- 日時・店舗コード・売上金額・結果(成功/失敗)を1行ずつ追記
💡 応用・工夫ポイント
| 機能 | 実装方法・アイデア |
|---|---|
| フォームが変化した時の耐性 | 複数セレクタ(ARIA+CSS)を組み合わせる |
| 店舗ごとのエラー記録 | エラー時に log.csv に「失敗」と記録し、スキップ継続 |
| Excelを閉じずに書き戻す | 「開いたまま編集」に対応できる Excelファイルの保存 を使用 |
| 日別ログフォルダ | yyyyMMdd.csv のログを logs/ フォルダに自動作成 |
📋 テスト手順(10分で確認)
sales.xlsxにダミーデータを入力(3〜5件)- PADを手動で実行
- 管理画面にデータが自動登録されるか確認
- 登録後、Excelの「登録状況」列が更新されているか確認
- エラー時は処理がスキップされるか確認
✅ 練習ポイントまとめ
| スキル | 本フローで習得できる内容 |
|---|---|
| ✅ Excel読み取り | 行ループ/条件付き処理/セル値取得と書き込み |
| ✅ Web自動入力 | UIセレクタの安定取得とフォーム操作 |
| ✅ 条件分岐と例外処理 | 成功/失敗でのフロー分岐・途中スキップ制御 |
| ✅ 再実行対応 | フラグ管理により「途中からの再開」が可能に |
❓ よくある質問(FAQ)
Q1. Excelを閉じていても書き込める?
A. PADの Excel起動 → バックグラウンドモード であれば、開いていなくても読み書き可能です。
Q2. 途中で止まっても再開できる?
A. 「登録済み」フラグをもとに、すでに処理した行をスキップできる設計です。
途中でエラーになっても、次回起動時に未処理分だけを再開します。
Q3. 店舗コードが英数字混在でも大丈夫?
A. テキスト形式として扱えば問題ありません。Excel内のデータ型を「文字列」にしておくと安心です。
Q4. スケジュール実行できますか?
A. はい、タスクスケジューラで毎朝8:30などに main_flow.padx を実行できます。
