【Python】Windowsタスクスケジューラで定期的に自動実行する方法(EXEファイル)
2021.02.10 /

本記事ではPythonスクリプト(EXEファイル)をWindowsタスクスケジューラで定期的に自動実行する方法を解説していきます。
Pythonスクリプトによるスクレイピングによる情報収集といった定期的に実行する必要がある作業は、Windowsの標準アプリであるタスクスケジューラを使いましょう。
タスクスケジューラを使用することで、Pythonスクリプトの実行スケジュールを簡単に組むことができます。
Unix/Linux系であれば、cronを使ってPythonスクリプトの定期実行ができます。
本記事はWindowsユーザー向けの記事なので、Windowsのタスクスケジューラを使用しています。
本記事を通して以下の知識を学べます。
- Windowsタスクスケジューラについて
- PythonスクリプトのEXE化方法
- Pythonスクリプトのタスクスケジューラでの定期実行方法
タスクスケジューラとは
タスクスケジューラとはWindows10に標準搭載されているタスク管理アプリケーションです。
特定の曜日や時間で指定したアプリケーション(スクリプト)を定期的に実行することができます。
タスクスケジューラを使用してルーチン作業を自動化できるので、営業時間外の深夜にプログラムを走らせたり、作業忘れを防止するなど様々な用途に使用されています。
Pythonスクリプトとタスクスケジューラを組み合わせることで、定期的にPythonスクリプトを自動実行する仕組みを作ることができます。
PythonスクリプトのEXE化
pyファイルのままPythonスクリプトをタスクスケジューラで実行することもできますが、私はPythonスクリプトをEXE化して使用しています。
EXE化することによって、誰でも(Pythonをインストールしていなくても)実行することができるからです。
PythonスクリプトのEXE化方法については以下記事をご参照ください。

【Python】Selenium:ブラウザ操作して静的・動的(Ajax、javascript)ページから情報を取得
もちろんPythonをインストールしているパソコンであれば、EXE化せずとも実行することはできます。
その方法についても併せてご紹介いたします。
タスクスケジューラで定期自動実行する方法
EXE化したPythonスクリプト
PythonスクリプトをEXE化しましたら、以下の流れでタスクスケジューラに登録します。
- 「スタート」>「Windows管理ツール」>「タスクスケジューラ」の順に選択
- 表示されたタスクスケジューラから「基本タスクの作成」を選択
- 「作成ウィザード」に名前と説明を入力して「次へ」をクリック
- 「タスクトリガー」から定期実行させる間隔を選択して「次へ」をクリック
- 実行する詳細な日時を選択して「次へ」をクリック
- タスクの開始タイミングを選択して「次へ」をクリック
- Pythonスクリプト(EXE)を選択して「次へ」をクリック
- 要約画面で「プロパティダイアログを開く」のチェックボックスにチェックして「完了」をクリック
- プロパティ画面で「ユーザーがログインしているときのみ実行する」にチェックがあることを確認する









上記の流れで定期的にPythonスクリプトを実行するタスクを登録できます。
また私の場合ですが、
プロパティ画面で「ユーザーがログオンしているかどうかに関わらず実行する」を選択してタスクを実行すると必ず失敗してしまいました。
Pythonスクリプトのパス指定を特別変えなければうまく実行できないかもしれないです。
pyファイル(EXE化していない)のPythonスクリプト
Pythonをインストールしているパソコンであれば、EXE化せずにPythonスクリプトをタスクスケジューラで実行できます。
「EXE化したPythonスクリプト」をタスクスケジューラに登録する場合と比べると、「プログラムの開始」画面での入力項目が異なります。

上記画面で以下のように入力します。
説明 | 入力 |
---|---|
プログラム/スクリプト | python.exeのパス |
引数の追加 | 実行するPythonスクリプト名(pyファイル) |
開始 | pyファイルまでの絶対パス |
python.exeのパスは以下コマンドを実行することで確認することができます。
py --list-paths
3つの項目を入力すると以下のようになります。

上記3つの入力項目を気を付ければ、EXE化せずともPythonスクリプトの定期的な実行がタスクスケジューラで可能となります。
まとめ
本記事「【Python】Windowsタスクスケジューラで定期的に自動実行する方法(EXEファイル)」はいかがでしたか。
Windowsに標準搭載されているタスクスケジューラを使えば、非常に簡単に定期実行ができるようになります。
ぜひ紹介した方法でルーティンタスクを登録して、注力すべき業務に集中できるようにしてください。