【完全自動化】Power Automate for desktopとLINE Messaging APIでフォルダを毎日1回自動監視してスマホに通知する方法(タスクスケジューラ連携の罠と解決策)

 Windows 11の指定フォルダにファイルがたまったとき、スマホに自動で通知が来る仕組みを作りたいと思ったことはありませんか?

本稿はGeminiに手順を調べてもらいながら、トライアンドエラーで出来上がったもので、なおかつ、本稿の大部分の執筆をGeminiにしてもらいました。

今回は、Windows 11に標準搭載されている「Power Automate for desktop(PAD)」「LINE Messaging API」、そして「タスクスケジューラ」を組み合わせて、毎日1回完全自動でフォルダを監視し、条件を満たしたときだけLINEにプッシュ通知を送るシステムを構築しました。

数々のエラーや仕様の罠を乗り越えて辿り着いた「完全自動化」の手順と、重要な注意事項をまとめます。

🛠️ 全体のシステム設計

  • 監視・判定:Power Automate for desktop(PAD)

  • 通知先:LINE Messaging API(公式アカウント)※無料プランで月200通まで対応

  • 定期実行:Windows タスクスケジューラ(毎日1回実行)

📝 構築手順

ステップ1:LINE Messaging APIの準備

まずは通知の受け皿となるLINE公式アカウントを作成します。

  1. LINE Developersコンソールにログインし、プロバイダーと「Messaging API」のチャネルを作成。

  2. スマホのLINEアプリで、作成した公式アカウントのQRコードを読み込んで友だち追加する。

  3. チャネル設定から以下の2つの情報を控える。

    • チャネルアクセストークン(長期)

    • あなたのユーザーID(「チャネル基本設定」にある U から始まる文字列)

ステップ2:PADでのフロー作成

PADで以下のような条件分岐フローを作成します。

  1. 「フォルダ内のファイルを取得」 アクションで対象フォルダを指定。

  2. 「If」 アクションで %Files.Count% >= 10$n$件以上)を設定。

  3. 条件内に 「Webサービスを呼び出す」 アクションを配置し、以下のように設定。

    • URL: https://api.line.me/v2/bot/message/push

    • メソッド: POST

    • 受け入れる / コンテンツタイプ: application/json

    • カスタムヘッダー: Authorization: Bearer 【あなたのチャネルアクセストークン】

    • 要求本文(Body): 下記のjsonテキストを設定。

      JSON
      {
        "to": "【あなたのユーザーID】",
        "messages": [
          {
            "type": "text",
            "text": "警告:ファイルが10件以上あります!"
          }
        ]
      }
      
    • 詳細設定(★超重要): 「要求本文をバイナリデータに変換します」を【オフ(無効)】にする。

ステップ3:タスクスケジューラへの登録

毎日1回自動実行するために、Windowsのタスクスケジューラに登録します。

  1. PADのマイフロー一覧から、作成したフローの「ショートカットの作成」を実行(デスクトップに .url ファイルが作られます)。

  2. タスクスケジューラで「基本タスクの作成」を行い、トリガーを「毎日(任意の時間)」にする。

  3. 「プログラムの開始」で以下のように入力する。

    • プログラム/スクリプト: cmd.exe

    • 引数の追加: /c start "" "C:\Users\あなたのユーザー名\Desktop\フォルダ監視通知.url"

  4. タスクのプロパティを開き、以下の詳細設定を行う。

    • 条件タブ: 「タスクを実行するためにコンピューターのスリープを解除する」にチェック。

    • 設定タブ: 「タスクをスケジュール通りに開始できなかった場合は、すぐにタスクを実行する」にチェック(PC電源オフ時の補正)。

ステップ4:外部実行時の確認ダイアログの無効化(レジストリ調整)

タスクスケジューラから実行した際、PAD側で「このフローを実行しますか?」という確認ダイアログが出て自動化がストップするのを防ぎます。

  1. regedit(レジストリエディター)を開く。

  2. HKEY_CURRENT_USER\SOFTWARE\Microsoft\Power Automate Desktop を開く。

  3. 新しい値として EnableAskBeforeRunningAFlowExternally (DWORD) を作成し、値を 0 に設定する。

  4. PADを再起動する。

⚠️ ハマりやすい注意点・解決した罠まとめ

ブログを読んで試す方のために、実際に直面したエラーと解決策をトラブルシューティングとして残します。

① LINE通知で「400: The request body could not be parsed as JSON」エラーが出る

  • 原因:JSONコードの末尾の閉じカッコミス(]} の間違い)や、PADの仕様でデータの先頭に変な文字コードが混入するため。

  • 対策:「要求本文をバイナリデータに変換します」のトグルを必ずオフにすること。ここがONだとLINE側がデータを解析できず400エラーになります。

② タスクスケジューラで「ファイルが見つかりません」エラーが出る

  • 原因:Microsoft Store版のPADから作ったショートカットは .lnk ではなく .url 形式であるため、exeファイルを直接指定したり .lnk として叩くとエラーになります。

  • 対策:プログラムに cmd.exe を指定し、引数で /c start "" "〜.url" のようにインターネットショートカットとして呼び出すことで、Store版特有のパスの変更や自動アップデートにも耐えられる強固な設定になります。

③ 自動実行なのに画面で止まる

  • 原因:セキュリティのため、外部からフローを呼び出すとPADが確認を求めてくる仕様。

  • 対策:手順4の通り、レジストリで EnableAskBeforeRunningAFlowExternally0 にすることで、完全なバックグラウンド全自動実行が可能になります。

💡 まとめ

LINE Notifyのサービス終了に伴い、Messaging APIへの移行が必要でしたが、この設定であれば月200通の無料枠を賢く節約しながら、毎日確実にスマホへ通知を送ることができます。

少し手順は多いですが、一度レジストリやタスクスケジューラまで設定してしまえば、あとはPCが勝手に働いてくれる快適な環境が手に入ります。ぜひ試してみてください!

コメント