テクノロジーガイド

Windows タスクスケジューラで Python スクリプトを自動実行する方法

2 min read 自動化 更新されました 19 Sep 2025
WindowsでPythonスクリプトをタスクスケジューラで自動実行する方法
WindowsでPythonスクリプトをタスクスケジューラで自動実行する方法

目的と関連ワード

Python スクリプトを定期実行して手作業を減らす方法を示します。

  • 関連ワード: Python スクリプト スケジュール, Windows タスクスケジューラ, バッチファイル 自動実行, virtualenv スケジュール, ログ出力

Pythonスクリプトのスケジュール設定イメージ

概要と準備

タスクスケジューラは Windows に標準で備わるツールです。これを使うと、毎日・毎週・一度限りなど任意のトリガーで Python スクリプトを起動できます。事前に確認しておくべき点:

  • Python 実行ファイルのパス(where python で確認)
  • スクリプトの絶対パス
  • 実行に必要な環境変数や仮想環境
  • 管理者権限が必要かどうか

重要: スクリプトが外部リソース(ネットワークドライブ、共有フォルダ、API)に依存する場合は、その接続がスケジュール時にも利用可能か確認してください。

タスクスケジューラから直接スクリプトをスケジュールする手順

  1. Win + R を押して「taskschd.msc」と入力し Enter を押してタスクスケジューラを開きます。

タスクスケジューラを開く画面

  1. 「操作」タブに移動し、「基本タスクの作成…」をクリックします。

基本タスクの作成画面

  1. タスクの名前と説明を入力して「次へ」。わかりやすい名前を付けます(例: Daily Data Export)。

タスクの名前と説明入力画面

  1. 実行頻度(毎日、毎週、1回など)を選択して「次へ」。

タスクの開始タイミング選択画面

  1. 必要なら開始日と時刻を設定します。次に「操作」で「プログラムの開始」を選びます。

実行する操作を選択する画面

  1. “Program/script” フィールドには Python 実行ファイルのパスを入力し、”Add arguments” フィールドにスクリプトのフルパスを入れます。また、”Start in”(作業ディレクトリ)をスクリプトのディレクトリにしておくと相対パス問題を避けられます。

Python 実行ファイルのパス指定画面

例:

  • Program/script: C:\Python39\python.exe
  • Add arguments: “C:\projects\scripts\daily_report.py”
  • Start in: C:\projects\scripts
  1. 設定を確認して「完了」をクリックします。

設定を確認する画面

これで指定したスケジュールで Python スクリプトが起動します。

バッチファイル経由で実行する別の方法

直接指定する代わりにバッチファイル(.bat)を作ると、以下の利点があります:

  • 仮想環境のアクティベートや複数コマンドの実行が可能
  • ログのリダイレクトやエラーハンドリングをまとめられる

メモ帳に以下を貼り付けて保存し、拡張子を .bat にします。

@echo off
REM 仮想環境を使う例
call "C:\projects\venv\Scripts\activate.bat"
REM Python をフルパスで呼び出す(必要に応じて -u を付けるとバッファリングを抑制)
"C:\projects\venv\Scripts\python.exe" "C:\projects\scripts\daily_report.py" >> "C:\projects\logs\daily_report.log" 2>&1
REM 終了コードを返してログを残す
exit /b %ERRORLEVEL%

ポイント:

  • パスにスペースがある場合は必ず二重引用符で囲んでください。
  • 標準出力と標準エラーをファイルにリダイレクトするとデバッグが容易になります。
  • -u を Python に渡すと標準出力がアンバッファ化され、ログがリアルタイムに出力されます。

バッチファイルを作ったら、タスクスケジューラでは Program/script にバッチファイルのフルパスを指定します。

Program/script: C:\projects\scripts\run_daily_report.bat
Add arguments: 
Start in: C:\projects\scripts

Python のパスを確認するための where コマンド画面

タスクの実行を確実にする設定

タスクのプロパティを開き、以下を確認/変更します。

タスクのプロパティを開く画面

  • 「全般」タブ: 「ユーザーがログオンしているかどうかにかかわらず実行する」を選択。バックグラウンド実行に必要です。
  • 管理者権限が必要なら「最上位の特権で実行する」をチェックします。

タスクの一般設定画面

  • 「条件」タブ: ノートPCで AC 電源専用になっていると動作しません。「コンピューターが AC 電源に接続されている場合のみタスクを開始する」のチェックを外すことを検討してください。

タスクの条件設定画面

  • 「設定」タブ: 失敗時の再試行や最大実行時間を設定できます。

最後に「OK」を押し、必要に応じてパスワードを入力して設定を保存します。

実行の確認とログの確認

タスクを手動で実行して動作を確認します。タスクを右クリックして「実行」を選びます。

タスクを手動実行する画面

スクリプトが出力するログやファイルを確認して、期待通りに動いているかの検証を行います。

タスク出力の確認画面

よくある問題と対処法

  • タスクは「実行」になるがスクリプトが動かない: 作業ディレクトリ(Start in)が正しいか確認。相対パスでファイルを参照していると失敗しやすい。
  • 権限エラー: 「最上位の特権で実行する」をオンにする、または管理者アカウントで実行する。
  • ネットワークドライブが見つからない: タスクはサービスとして実行されるのでユーザーセッションのネットワークドライブはマウントされません。UNC パス(\server\share)を使うか、起動時にドライブをマップするコマンドをバッチに含める。
  • 環境変数が見つからない: GUI で設定したユーザー環境変数はタスク実行時に反映されない場合があります。バッチで明示的に環境変数を設定するか、システム環境変数に追加する。
  • 仮想環境の有効化が必要: バッチファイル内で activate.bat を呼ぶか、python.exe のフルパスを仮想環境配下に指定する。

実践的なヒントと改善案

  • ログローテーション: 単純に追記するとファイルが肥大化します。日付付きファイル名を使うか、古いログを定期削除するタスクを追加しましょう。
  • 再試行ポリシー: ネットワーク依存のスクリプトは失敗時に再試行する仕組みを入れておくと安定します。
  • 監視: 重大な失敗はメールや Teams/Slack に通知するステップをバッチに入れるか、エラーレベルに応じた監視タスクを用意します。

代替アプローチ

  • Windows サービスとしてデーモン化する(常駐処理が必要な場合)
  • コンテナ化してスケジューラ(Kubernetes CronJob や Azure WebJob)で実行する
  • サードパーティのジョブスケジューラ(例: Jenkins、Airflow)を利用する(複数依存やワークフロー管理が必要な場合)

役割別チェックリスト

  • 開発者:
    • スクリプトに絶対パスを使用しているか確認
    • ログ出力を実装しているか
    • エラーハンドリングと終了コードを返しているか
  • システム管理者:
    • ユーザー権限とポリシーを確認
    • タスクの実行ユーザーのパスワードを管理
    • ネットワーク/共有リソースのアクセス権を確認
  • 運用担当:
    • ログ監視ルールを設定
    • 再試行と通知ルールを用意

受け入れ基準

  • タスクを手動実行して期待する出力がログに残る
  • スケジュール時間に自動実行される
  • 失敗時に再試行または通知が行われる
  • 長時間実行でもタイムアウトやリソース枯渇が発生しない

決定フロー(簡易)

flowchart TD
  A[スクリプトは定期実行が必要か?] -->|いいえ| B[手動で実行]
  A -->|はい| C[タスクスケジューラでスケジュール]
  C --> D{依存関係ありか}
  D -->|いいえ| E[直接またはバッチで実行]
  D -->|はい| F[仮想環境・ネットワーク設定を含むバッチ]
  F --> G[監視と通知を追加]
  E --> G

小さな用語集

  • タスクスケジューラ: Windows に標準搭載のジョブスケジューラ
  • バッチファイル: Windows のコマンドをまとめた .bat ファイル
  • virtualenv: Python の仮想環境

まとめ

Windows タスクスケジューラは、外部ツールを使わずに Python スクリプトを自動化する実用的な方法です。直接スクリプトを指定するか、バッチファイルで環境を整えてから実行するかは用途次第です。ログや作業ディレクトリ、権限の扱いをきちんと定義すれば、予期せぬ失敗を大幅に減らせます。

重要: 権限やネットワーク依存、仮想環境の扱いは必ず事前に検証してください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Androidでホーム画面ごとに別の壁紙を設定する方法
カスタマイズ

Androidでホーム画面ごとに別の壁紙を設定する方法

データブローカーから個人情報を削除する方法
プライバシー

データブローカーから個人情報を削除する方法

Androidでホーム画面ごとに壁紙を設定する方法
Android

Androidでホーム画面ごとに壁紙を設定する方法

Apache Tomcatの監視と管理ガイド
監視

Apache Tomcatの監視と管理ガイド

Disney Plusアプリが動かない時の修正ガイド
ストリーミング

Disney Plusアプリが動かない時の修正ガイド

WindowsでPythonスクリプトをタスクスケジューラで自動実行する方法
自動化

WindowsでPythonスクリプトをタスクスケジューラで自動実行する方法