【新連載】Python業務自動化 第5回 タスクスケジューラでの定期実行

Python自動化

はじめに

こんにちは!「Python業務自動化」連載の第5回へようこそ。これまでの連載では、Excel操作の自動化やメール送信の自動化など、Pythonを使って日々の業務を効率化する方法を紹介してきました。

せっかく便利な自動化スクリプトを作っても、毎回自分で実行するのを忘れてしまっては意味がありませんよね。そこで今回は、Windowsのタスクスケジューラを使って、Pythonスクリプトを「決まった時間に自動で実行する」方法を解説していきます。

「毎朝9時にレポートを作成したい」「毎週月曜日にデータをバックアップしたい」といった要望を、プログラムを起動しっぱなしにせず実現できるようになります。初心者の方にもわかりやすいよう、手順を一つひとつ丁寧に説明していきますので、ぜひ最後までお付き合いください。

タスクスケジューラとは何か

タスクスケジューラとは、Windowsに標準搭載されている機能で、指定した時間やタイミングでプログラムやスクリプトを自動的に実行してくれる仕組みです。

どんなことができるのか

  • 毎日決まった時刻にプログラムを起動する
  • パソコンが起動したタイミングで自動実行する
  • 週1回、月1回などの周期的な実行を設定する
  • 特定のイベント(ログオン時など)をトリガーにして実行する

なぜ業務自動化に役立つのか

人の手を介さずにスクリプトが実行されるため、「実行し忘れ」や「実行時間のばらつき」がなくなります。例えば毎朝決まった時間に売上データを集計するスクリプトを組んでおけば、出社前に結果ができあがっている、といった運用も可能になります。

Pythonスクリプトを実行する準備をしよう

タスクスケジューラに登録する前に、Pythonスクリプトを外部から確実に実行できる状態にしておく必要があります。ここでは代表的な方法として、バッチファイル(.bat)を使う方法を紹介します。

Pythonのパスを確認する

まずはコマンドプロンプトを開き、以下のコマンドでPythonの実行パスを確認しましょう。

where python

表示されたパス(例:C:\Users\ユーザー名\AppData\Local\Programs\Python\Python311\python.exe)を控えておきます。

バッチファイルを作成する

次に、メモ帳などで以下のような内容のファイルを作成し、「run_script.bat」という名前で保存します。

@echo off
cd /d C:\Users\ユーザー名\scripts
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python311\python.exe sample.py
pause

1行目の@echo offはコマンドの実行内容を画面に表示しないようにする設定、2行目でスクリプトが置いてあるフォルダに移動し、3行目でPythonスクリプトを実行しています。pauseは動作確認用なので、本番運用時には削除しても構いません。

このバッチファイルをダブルクリックして、正しくスクリプトが実行されるか事前に確認しておきましょう。

タスクスケジューラへの登録手順

バッチファイルの動作確認ができたら、いよいよタスクスケジューラに登録していきます。

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

Windowsのスタートメニューで「タスクスケジューラ」と検索し、アプリを起動します。

基本タスクの作成

  1. 右側の「基本タスクの作成」をクリックします。
  2. タスクの名前(例:「毎朝の売上集計」)と説明を入力し、「次へ」を押します。
  3. トリガー(実行タイミング)を選択します。「毎日」「毎週」「ログオン時」など、用途に合わせて選びましょう。
  4. 開始日時を指定します。
  5. 操作の種類で「プログラムの開始」を選択します。
  6. 「参照」ボタンから、先ほど作成したバッチファイル(run_script.bat)を指定します。
  7. 最後に設定内容を確認し、「完了」をクリックすれば登録は完了です。

詳細設定を確認する

登録したタスクは一覧の中から選択し、右クリックで「プロパティ」を開くことで詳細設定の確認・変更ができます。特に以下の項目はチェックしておきましょう。

  • 「最上位の特権で実行する」:管理者権限が必要な処理を行う場合はチェックを入れます。
  • 「ユーザーがログオンしているかどうかにかかわらず実行する」:パソコンにログインしていない状態でも実行したい場合に選択します。
  • 「条件」タブ:バッテリー駆動時は実行しない、といった条件を細かく設定できます。

動作確認とトラブルシューティング

設定が完了したら、実際に正しく動くかを確認しましょう。

手動で実行してテストする

タスクスケジューラの一覧から対象タスクを右クリックし、「実行」を選択すると、設定時刻を待たずにすぐ動作確認ができます。想定通りの結果が得られるか確認しましょう。

うまく動かないときのチェックポイント

  • ファイルパスが正しいか:バッチファイル内のPythonやスクリプトのパスに誤りがないか確認します。
  • 相対パスの問題:スクリプト内でファイルを読み書きする際、相対パスを使っているとタスクスケジューラ経由では意図しない場所が参照されることがあります。できるだけ絶対パスを使うか、バッチファイル内でcd /dを使って作業フォルダを明示しましょう。
  • 実行結果を記録する:タスクスケジューラの「履歴」タブで実行結果やエラー内容を確認できます。表示されない場合は、タスクスケジューラの「操作」メニューから「すべてのタスク履歴を有効にする」を選択してください。
  • ログファイルを出力する:スクリプト側で実行結果をテキストファイルに出力するようにしておくと、後から動作確認がしやすくなります。

ログ出力の簡単な例

以下のようにPythonの標準出力をファイルにリダイレクトすることで、簡易的なログを残すことができます。

C:\Python311\python.exe sample.py >> log.txt 2>&1

このように記述しておくと、正常終了時の出力だけでなく、エラーが発生した場合の内容もlog.txtに記録されるため、トラブル時の原因調査に役立ちます。

まとめ

今回は、Pythonスクリプトをタスクスケジューラに登録し、定期的に自動実行する方法を解説しました。

  • タスクスケジューラは、Windows標準の機能でプログラムの自動実行を実現できる
  • バッチファイルを作成しておくと、Pythonスクリプトを呼び出しやすくなる
  • 基本タスクの作成ウィザードを使えば、初心者でも簡単に登録できる
  • 動作確認やログ出力を行うことで、トラブル時の原因究明がしやすくなる

これで、毎回手動でスクリプトを実行する手間から解放され、業務の自動化がさらに一歩進みます。次回の連載では、自動化スクリプトの実行結果を自動でメール通知する方法について解説する予定です。お楽しみに!

\ 初心者から未経験でプロを目指す /

Pythonプログラミング マンツーマン詳細はこちら >

タイトルとURLをコピーしました