Power Automate Desktopで「メーカー新色リリース検知→Slack通知」自動化フローの作り方

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

🎯 目的・やりたいこと

  • 毎朝8:30に自動実行(Windowsタスクスケジューラ)
  • 5社の「新製品」ページをクロール
  • 見出し+公開日を抽出(セレクタ耐性強化済み)
  • 過去に通知済みかどうかを seen_items.xlsx で判定
  • 初検知の新色のみをSlackに通知(API未使用)

💡 自動化で得られるメリット

手作業自動化後
サイト巡回1クリック or 時間指定でOK
公開日チェック自動で差分だけ検出
Slackに投稿自動で投稿フォームに貼り付け

📁 フォルダ構成・必要ファイル

NewColorNotifier/
├─ main_flow.padx                     ← メインフロー
├─ modules/
│   ├─ CrawlSiteA.padx
│   ├─ CrawlSiteB.padx
│   ├─ CrawlSiteC.padx
│   ├─ CrawlSiteD.padx
│   ├─ CrawlSiteE.padx
│   └─ PostToSlack.padx
├─ data/
│   ├─ seen_items.xlsx                ← 永続既読リスト
├─ docs/
│   └─ README.pdf

📄 seen_items.xlsx 構成例

サイト名タイトル公開日
SiteA「プレミアムレッド」登場!2025/09/10
SiteBグレージュ新色リリース2025/09/09

※通知済みデータをここに記録することで、差分のみ通知できます。


⏰ スケジュール実行(8:30自動起動)

Windows タスクスケジューラに以下を登録:

  • トリガー:毎日 8:30
  • アクション:Power Automate Desktop → main_flow.padx

🧠 フローの処理構成(概要図)

[1] seen_items.xlsx 読み込み
 ↓
[2] 各メーカーサイトをクロール(5社分)
 ↓
[3] 公開日+見出しを抽出
 ↓
[4] seen_items と照合 → 新規アイテムだけ抽出
 ↓
[5] Slack Web投稿画面に貼り付け
 ↓
[6] seen_items.xlsx に新規を追記保存

🔧 Power Automate Desktop フロー作成手順(完全ガイド)


✅ STEP1:既読リスト読み込み(seen_items.xlsx)

アクション:

  • 「Excelワークシートからデータを読み取る(閉じたブック)」
  • パス:data/seen_items.xlsx
  • 出力:SeenList
変数名:SeenList(リスト)

🔁 STEP2:5社分のサイトクロール(モジュール分離)

各サイトごとにセレクタや構造が異なるため、以下のようにモジュールごとにクロール処理を分けます:

サイトサブフロー名特徴
SiteACrawlSiteA.padxCSSセレクタ固定
SiteBCrawlSiteB.padxARIAセレクタ+近傍テキスト抽出
SiteCCrawlSiteC.padxUIが画像ベース→画像近傍クリック必要
SiteDCrawlSiteD.padx日付が別DOM
SiteECrawlSiteE.padx検索ページ形式

各サブフローで出力する内容:

  • NewItemsList(リスト形式)
[
  {"サイト名": "SiteA", "タイトル": "●●新色登場", "公開日": "2025/09/11"},
  ...
]

🧠 STEP3:差分判定(未通知リスト抽出)

アクション:

  • 「リストをフィルタリング」
条件:
  NewItem["タイトル"] + NewItem["公開日"]
  が SeenList に存在しない → 通知対象
出力:ItemsToNotify(リスト)

🧾 STEP4:Slack投稿用メッセージ作成

アクション:

  • 「リストを繰り返し処理(For Each)」
  • 文字列連結して以下のようなメッセージを生成:
【SiteA】
●●新色登場(2025/09/11)

【SiteC】
グレーシルバー新製品!(2025/09/11)

→ 変数:SlackMessage


💬 STEP5:Slack Web投稿(PostToSlack.padx)

方法:APIは使わず、Slackの投稿フォームに貼り付けて送信

  1. SlackチャンネルのWeb版を開く(https://app.slack.com)
  2. 該当チャンネルに遷移(URL直打ち可)
  3. テキストエリアをUI要素で取得
  4. SlackMessage を貼り付け+Enterキー送信

補足:ブラウザのセッションが必要なので、最初は手動ログインしておくこと


📥 STEP6:新しい通知内容を seen_items.xlsx に追記

アクション:

  • ループ:ItemsToNotify
  • 「Excelファイルに行を追加」
列:サイト名/タイトル/公開日
ファイル:seen_items.xlsx

🧩 セレクタ設計Tips(耐障害性向上)

パターン対応方法
CSSセレクタ固定class, id, nth-childを明示
ARIAセレクタaria-label, role="heading" など
画像近傍クリック「画像を検出」+「画像の右隣をクリック」
DOM変動「要素が見つからないとき」→画像クリックへ分岐

📋 ログ・実行履歴の保存(任意)

  • 通知した内容も別ファイル(notified_log.csv)に保存しておくと後で便利
日時,サイト名,タイトル,公開日
2025/09/11,SiteA,●●新色登場,2025/09/11

⚠️ エラーハンドリング設計

エラー内容対応方法
ページが開けないTry-Catchでリトライまたはスキップ
Slack投稿失敗メッセージ表示+フロー継続
セレクタで要素が取れないセレクタ2系統でFallback対応
seen_items.xlsxが開かれているエラーメッセージ表示+ユーザーに手動対応を促す

✋ 実装のテスト方法

  1. seen_items.xlsxを空にして仮のテストデータだけ入れて実行
  2. Slackに投稿されるかを確認
  3. 再度実行して差分通知が除外されるかチェック
  4. 新しいアイテムを手動で追加して、差分がまた通知されるかを確認

❓ よくある質問(FAQ)


Q1. APIを使わない理由は?

A. Slack APIのトークン取得や権限設定が不要なため、Web投稿なら社内で試しやすい・導入が楽です。


Q2. 投稿メッセージの文面を変更したい

A. PAD内の変数SlackMessageの生成部分を編集すればOKです。テンプレファイルを読み込んでもOK。


Q3. セレクタがうまく取れない

A. 画像認識との併用をおすすめします。スクロール+画像の右隣クリックでほぼ対応可能です。


Q4. どのタイミングで既読データを保存してる?

A. 通知送信後、正常終了したアイテムのみ seen_items.xlsx に追記しています。


Q5. タスクスケジューラが動かない場合は?

A. 「ログオン時に実行」「最上位の特権で実行」など設定を確認してください。
また、PADがバックグラウンドで実行可能なように構成してください。

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

この記事を書いた人

目次