見出し画像

Power Automate Desktop無償版をタスクスケジューラで自動実行させる方法

毎日や定期的に繰り返している作業をできるだけ自動化したい!
簡単なことだけど、簡単なことこそ面倒!って思いませんか?

ルーティンワークを少しでも楽にするために、自動化はとても便利ですよね。

今回は、Power Automate Desktop(無償版)を使った自動化についてです。

Power Automate Desktopが便利だと聞いてちょっとチャレンジしたのですが、自動化を目指しているのに、決まった日時に実行させるスケジュール機能がなくなっていて(汗)

今回、私は無償版で、しかも決まった日時に実行させたかったので、この部分の設定とかめっちゃ大変でした。(有料版は日時指定で実行できるようです)

実は下記のサイトを参考にしたのですが、残念ながら私の環境では動きませんでした。(理由はわからないのですが、PC環境の違いなのかなぁ?)

Power Automateを自動定期実行させたい!なんて、あんまり需要がないのかもしれないけど笑

ネットにあまりやり方が載っていなくて、もしかすると諦めちゃった方もいるかなと思ったので、私の設定方法を記録したので参考になれば嬉しいです。


1.Power Automate esktopの準備

Power Automate Desktopをダウンロードして、必要なフローを作成します。フロー単体で動くかチェックしてくださいね。(作成方法は今回割愛します)

Power Automateで新しいフローを作成します

ちなみに今回のフローはこんな感じです。

フローを作成します

今回のフロー名は「StartPATFlow」です。

フローが完成しました

2.PowerShellスクリプトを作成

PowerShellスクリプトは、こちらのサイトを参考にしました。

PowerShellスクリプトは↑このまま使いました!
説明ではbatファイルも作成すると記載されていますが、今回はなくても動いたのでなしでOK!(実はbatファイルも作成して動かしてみたのですが、batファイルがなくても動いたのでシンプルにしました)

PowerShellスクリプトを作成(コピペ)して、どこかにフォルダ作ってそこにファイルを置いてください。

【環境】
・デスクトップに「PAD」フォルダを作成(デスクトップ以外もOK!ファイル名半角英数字ならなんでもOK!)
・PADフォルダ内に先ほどコピーペーストしたPowerShellファイル「StartPADFlow.ps1」を作成

※フォルダ名、ファイル名は必ず半角英数字で!

デスクトップにPADフォルダを作成して、PowerShellファイルを入れました

3.タスクスケジューラの設定

タスクスケジューラの設定はこちらのサイトを参照しました。が、これもまた動かなかったので少し設定を変更しました。

①全般の設定

色々なサイトを見ていると「ユーザーがログオンしているかどうかにかかわらず実行する」にチェックを入れた方がよさそうでしたが、エラーになってしまったので「ユーザーがログオンしているときのみ実行する」にしました。

「最上位の特権で実行する」はチェック入れた方がよさそうです!(そう言えばチェックなしで試してない…)

②トリガーを設定する

「新規」から登録してください(やり方は割愛)

③操作の設定

操作のタブはこんな感じになっています。ここにbatファイルを指定するやり方も試しましたが実行せず。直接PowerShellを指定するやり方をChatGPTくんに教えてもらったら動いたのでこちらにしました。

ここが難所でした…

【設定】
①powershell
②-NoProfile -ExecutionPolicy Bypass C:\Users\xxxxxx\Desktop\PAD\StartPADFlow.ps1 -flowName "StartPADFlow"
③C:\Users\xxxxxx\Desktop\PAD

②ですが、Power Automateのフロー名を -flowName ”フロー名” へ入れてくださいね。今回は「StartPATFlow」です。

コピーペしてください

※「C:\Users\xxxxxx\Desktop\PAD」部分はご自身のフォルダの場所を指定してください。半角英語必須です!

④条件の設定

AC電源で使用している場合のみ・・・は、一応チェックを外しました。

⑤設定の設定

この部分はお好みでいいと思います。ここまでできたらOKをクリック!

⑥その他の設定(確認)

一番右のタブ「履歴」は、初期設定では履歴が見れないようになっているかもしれないので、タスクスケジューラパネルの右側にある「すべてのタスク履歴を無効にする」になっているか確認してください。

「無効にする」と表示されていたらOKです

⑦実行テストをしてみる

見にくいですが、準備完了になりました。

ひとまず設定は完了

ただ今回は21時に自動で実行するようにしているので、今すぐ動かしたい場合は「右クリック」→「実行」をクリックします。

これで今すぐ実行します

⑧成功したら…

右下にPower Automateのこのようなポップアップが出てフロー通りに動きます!わーい!!
(これでちゃんと動いたら、指定日時で実行するか確認してくださいね)

4.単体で実行テストをする方法

①PowerShellスクリプトを直接実行させる

1.コマンドプロンプトを立ち上げます。

2.PowerShell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\xxx\Desktop\PAD\StartPADFlow.ps1" "StartPADFlow"
を入力orコピーしてEnter
(※ご自身のPowerShellファイルの場所とフロー名)

3.フローが実行されたらOKです!PowerShellからPower Automateがちゃんと連携されていることがわかります。なので、もしタスクスケジューラから動かないならタスクスケジューラの設定が問題だと考えられます。

■エラーが出た時の対処法

PowerShellファイル(StartPADFlow.ps1)の「#Power Automate for desktop起動」の部分を、下記に修正してログファイルにエラーを記録するようにします。

#Power Automate for desktop起動
Try {
    Start-Process -FilePath "ms-powerautomate://"
    Write-Output "Power Automate Desktop launched successfully." >> C:\Users\xxx\Desktop\PAD\log.txt
} Catch {
    Write-Output "Error launching Power Automate Desktop: $_" >> C:\Users\xxx\Desktop\PAD\log.txt
}

#UI Automation
Add-Type -AssemblyName "UIAutomationClient"
Add-Type -AssemblyName "UIAutomationTypes"

私の場合、「Error launching Power Automate Desktop: このコマンドは、次のエラーのため実行できません: アクセスが拒否されました。」になっていました。

この原因がわからないのですが、タスクスケジューラの設定時に「ユーザーがログオンしているかどうかにかかわらず実行する」ではなく「ユーザーがログオンしているときのみ実行する」だと動きました。

ユーザーは権限があるユーザーでしたし、セキュリティソフトも解除したのですがダメだったので、私の知識ではなぜかは未だに不明です…

<まとめ>

今回は、PowerAutomate Desktop(無償版)とタスクスケジューラを使って、指定日時にトリガーが発動し自動的にフローを行う方法を紹介しました!

ちなみに、私はこれで毎日の売上データ(仕入先別)のCSVをダウンロードすることに成功しました!今度はこのCSVデータをまとめる自動化にチャレンジしようと思っています。

他のやり方でできなかった方は是非試してみてください!(動く保証はないですが…🙇)


【自動化する目的】

会社によってはDX化やIT化がなかなかできない事情もありますし理解しています。(私も50代60代70代のPCとは無縁だったスタッフにiPADやパソコンの使い方を教えるのに苦戦していますし…)

ただ、無駄な時間を省くことで他の本来するべき業務に時間を使うことができますし、これからの労働人口不足や人材不足に備えていく必要もあると考えています。

新しいツールなどを導入して逆に仕事が増えたー!ってなるよりも(あるあるですよね?)このような小さいことだけどわざわざ人がしなくてもいい業務を少しでも自動化したり改善して小さな作業を減らしていけば、塵も積もれば山となるじゃないですけど、もっと他で時間を使えるようになると思います。


もしよければサポートお願いします!売上は、国内外の子ども達への寄付とさせていただきます。#チャイルドファンド活動しています