目次
🎯 目的
- 毎週月曜9:00に自動で売上CSVをダウンロード
- 日付付きフォルダ(例:
20250909/)に保存 - 30日以上前のデータはZIP圧縮してアーカイブフォルダに退避
- ログインやダウンロード完了の待機も自動で対応
🔄 自動化の全体フロー
[1] Chromeで管理画面にログイン
↓
[2] 売上CSVをダウンロード(ダウンロード完了を監視)
↓
[3] yyyyMMdd形式のフォルダを作成
↓
[4] ダウンロードファイルを日付フォルダに移動
↓
[5] 30日以上前のフォルダをZIP圧縮してアーカイブ
↓
[6] 実行ログをCSVに追記
📁 フォルダ構成(推奨)
WeeklyReportBot/
├─ main_flow.padx
├─ modules/
│ ├─ DownloadReport.padx
│ ├─ MoveFileToFolder.padx
│ ├─ ArchiveOldFolders.padx
│ └─ WriteLog.padx
├─ data/
│ ├─ config.json ← 設定ファイル
│ ├─ log.csv ← 処理ログ
├─ reports/
│ ├─ (日付ごとにフォルダ生成)
│ └─ archive/ ← 古いレポートZIP保存先
📄 config.json(設定例)
{
"downloadFolder": "C:\\Users\\User\\Downloads\\",
"targetFolder": "C:\\Users\\User\\Documents\\WeeklyReports\\",
"archiveFolder": "C:\\Users\\User\\Documents\\WeeklyReports\\archive\\",
"downloadFileNamePrefix": "sales_report_",
"timeoutSeconds": 60,
"fileStableWaitSeconds": 3,
"archiveThresholdDays": 30
}
⏰ タスクスケジューラ設定
| 項目 | 設定内容 |
|---|---|
| トリガー | 毎週月曜日 9:00 |
| アクション | Power Automate Desktop → main_flow.padx 実行 |
| ユーザー | 対象ユーザー(ログイン中) |
| 権限 | 「最上位の特権で実行」にチェック |
🛠 フロー作成手順(初心者向け)
✅ STEP1:Chrome起動+ログイン(DownloadReport.padx)
処理概要:
- Chrome起動(プロファイル指定でログイン維持)
- 管理画面へ遷移
- 売上CSVダウンロードボタンをクリック
アクション例:
chrome.exe --profile-directory="Profile 1" https://example.com/admin/reports
✅ ログインは初回だけ手動 → セッション保持のためプロファイルを使う
📥 STEP2:ファイルダウンロード完了を監視
方法:
downloadFolder内のファイルを記録- ダウンロード後の新規ファイル出現を監視
- 数秒間サイズ変化がないことを確認(安定確認)
実装アクション:
- フォルダの一覧を取得(開始時)
- ループで新ファイルの出現をチェック
- 出現したらサイズを2回取得し、一定であれば完了
📂 STEP3:日付付きフォルダの作成(MoveFileToFolder.padx)
実装:
- 今日の日付を取得(形式:yyyyMMdd)
targetFolder/yyyyMMdd/を作成(存在しない場合)- ダウンロードファイルをその中に移動
- ファイル名は元のままでも、固定名でもOK
📦 STEP4:古いフォルダをZIP化してアーカイブ(ArchiveOldFolders.padx)
実装:
targetFolder以下のフォルダを列挙- フォルダ名が
yyyyMMdd形式 → 日付に変換 - 今日から見て 30日以上前のフォルダだけ対象
- ZIP圧縮(同名.zip)+アーカイブフォルダへ移動
- 元フォルダを削除
🧾 STEP5:ログを記録(WriteLog.padx)
log.csv に追記する内容:
| 日時 | 保存先フォルダ | ファイル名 | ステータス |
|---|---|---|---|
| 2025/09/08 09:01 | 20250908 | sales_report_xxx.csv | 正常 |
アクション:
- 現在日時取得
- フォルダ名・ファイル名取得
- 結果とともにCSVファイルに1行追記
✅ セレクタ設計例(DownloadReport)
| 要素 | セレクタ例 |
|---|---|
| ダウンロードボタン | button[aria-label="CSVダウンロード"] |
| ログイン確認 | div.user-name または img.avatar |
| ダウンロード完了 | ファイル監視+DOM非表示などの組み合わせ |
✨ 応用Tips
| 応用内容 | 実装例 |
|---|---|
| ファイル名に日付を追加 | sales_report_20250909.csv などに名前変更 |
| Slack通知を追加 | ダウンロード完了後にSlackへ通知(Web投稿 or API) |
| 月次アーカイブも作成 | 月ごとのZIPファイルにまとめて保存も可能 |
| ダウンロード失敗の対応 | 60秒待ってもファイルが出現しなければログに「失敗」記録 |
📋 テスト手順(5分で確認)
- 実際にChromeで売上画面を開き、CSVをDLできる状態にする
main_flow.padxを手動で実行reports/yyyyMMdd/フォルダが作成されているか確認- CSVが正しく移動されているか確認
- 30日以上前のフォルダがZIPされているか確認(テスト用に日付変更)
log.csvに処理履歴が追加されているか確認
❓ よくある質問(FAQ)
Q1. なぜAPIじゃなくブラウザ操作?
A. Webレポート機能はAPI提供がない or 権限制限がある場合が多く、実際の管理画面でダウンロードする方が確実かつ汎用性が高いためです。
Q2. ダウンロード中にファイルが壊れない?
A. サイズの変化を数秒監視して、安定したら完了とみなす設計にしているため、未完了ファイルを誤処理しない工夫があります。
Q3. フォルダ名を月単位にしたい
A. 「yyyyMM」形式でフォルダを作れば月ごとの整理にも対応可能。フォルダ名は変数で自由に調整できます。
Q4. Windowsを起動しなくても動く?
A. タスクスケジューラは「ユーザーがログオンしているときにのみ実行」の設定が必要です。常に動作させたい場合は、PCをスリープにしないように構成してください。
