見出し画像

ファイル整理の自動化② タスクスケジューラ

前回作成したコードを自動実行するように設定します(Windows)。


サンプルコード

前回の投稿で作成したコードの必要な所をつなげると以下のようになります。ここでは、「sample.py」というようにpyファイルとして保存しておきましょう。

import datetime
import glob
import pandas as pd
import shutil
import os

today = datetime.datetime.today()
if today.month == 1:
    yyyymm = str(today.year -1) + '12'
else:
    yyyymm = str(today.year) + str(today.month -1).zfill(2)

src_path = "C:\\Users\\*******\\フォルダA\\■rawData\\"
output_path = "C:\\Users\\*******\\フォルダA\\■集計データ\\"
dst_path = f"C:\\Users\\*******\\フォルダA\\{yyyymm}"

files = glob.glob(src_path + '*.xlsx')

df1 = pd.read_excel(files[0])
for i in range(1, len(files)):
    df2 = pd.read_excel(files[i])
    df1 = pd.concat([df1, df2])

df1.to_excel(output_path + f'{yyyymm}集計データ.xlsx', index=False)

shutil.copytree(src=src_path, 
                dst = dst_path, 
                dirs_exist_ok=True
                )
for file in files:
    os.remove(file)

コードの中身については前回の投稿をご参照ください。

タスクスケジューラ

設定方法

Windowsにはタスクスケジューラという機能が搭載されており、定期的に実行したいプログラムを登録しておくことができます。
どこから開くのが正解かよく分かりませんが・・・タスクバーの検索ボックスに「タスクスケジューラ」と入力すると出てきます。

右側の「操作」の中にある「基本タスクの作成…」をクリックすると作成ウィザードが開きます。

ウィザードに沿って順番に入力していきます。

「トリガー」では定期実行の間隔を設定できます。ここでは、毎月1日としています(「次へ」を押すとさらに詳細を設定する画面になります)。

「操作」では何を実行するか設定します。「プログラムの開始」を選び、次に進みます。

最後に「完了」をクリックすると、タスクスケジューラの自動実行が設定されているプログラムのリストの中に今作成したタスクが追加されます。リストをクリックすることで設定を変更可能です。

実行

あとは、時が来れば実行されます。
・・・といっても1ヶ月は待てないので、テスト実行してみましょう。リスト上で右クリックすると以下のようなメニューが出てきます。

「実行する」をクリックすると、先ほど設定したpyファイルが実行されるハズです。上手く実行されなかった場合は、「プログラムの開始」の設定が間違ってないか確認してください。それ以前に、pyファイル自体が意図した挙動になるかterminal(コマンドプロンプト)から実行して確かめておく必要があります。

注)今回ご紹介したタスクスケジューラは、PCの電源が入ってないと実行できません。実行タイミングを電源が入っている時間帯にするか、実行前にPCを起動するようセットする必要があります。


Google Colabでは自動実行はできませんでしたが、ローカル環境でpyファイルを作成すれば簡単に自動実行することができます。
毎日・毎週・毎月…のルーチンワークを自動化できれば、トータルで膨大な時間(=お金)を節約することができます。皆さんも是非試してみてください!

この記事が気に入ったらサポートをしてみませんか?