【業務自動化】Pythonでスケジュール実行付きの自動レポート作成ツールを作る方法

日々のルーチン業務、「Excel集計」「PDFレポート作成」「メール送信」などを自動で毎朝8時に実行できたら、どれだけ楽になるでしょうか?

本記事では、Pythonを使って以下を自動化するツールの作り方を紹介します。


この記事でわかること

  • PythonでExcelやPDFレポートを自動生成する方法
  • スケジュール実行(毎朝決まった時間に動かす)設定
  • 自動メール送信まで含めた業務自動化の全体像

1. ツールの完成イメージと全体構成

このツールでは以下のことを自動化します

手順内容
データをCSV/DBから読み込み
Excelレポートを生成
PDFとして出力(オプション)
メールで自動送信(報告)
Windowsタスクスケジューラで毎朝実行

業務の手作業を丸ごとPythonに任せる構成です。


2. 必要なライブラリ一覧

pip install pandas openpyxl matplotlib reportlab schedule yagmail
ライブラリ用途
pandasデータ操作
openpyxlExcelファイルの生成
matplotlibグラフの作成
reportlabPDF出力(任意)
scheduleスケジュール実行制御
yagmailGmailを使ったメール送信

3. Excelレポートを自動生成するコード

import pandas as pd
from openpyxl import Workbook

def create_excel_report():
    df = pd.read_csv("sales_data.csv")  # 例:売上CSVを読み込む

    # ピボット集計など加工
    summary = df.groupby("担当者")["売上"].sum().reset_index()

    # Excelファイルに出力
    with pd.ExcelWriter("daily_report.xlsx", engine='openpyxl') as writer:
        summary.to_excel(writer, sheet_name='集計結果', index=False)

4. PDFに変換(オプション)

from reportlab.pdfgen import canvas

def export_to_pdf():
    c = canvas.Canvas("report.pdf")
    c.drawString(100, 750, "日次レポート - 売上集計")
    c.drawString(100, 730, "担当者別売上:〇〇万円")
    c.save()

5. メールで自動送信する方法

import yagmail

def send_email():
    yag = yagmail.SMTP(user="your@gmail.com", password="アプリパスワード")
    yag.send(
        to="recipient@example.com",
        subject="【自動送信】日次レポート",
        contents="本日の売上レポートをお送りします。",
        attachments=["daily_report.xlsx"]
    )

Gmailで送信するには「アプリパスワードの発行」が必要です。


6. Pythonでスケジュール実行する(毎日8時など)

import schedule
import time

def job():
    create_excel_report()
    export_to_pdf()
    send_email()

# 毎日8:00に実行
schedule.every().day.at("08:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(60)

7. タスクスケジューラで完全自動化

Pythonはターミナルで常駐させなくても、Windowsタスクスケジューラを使えば以下のように完全自動化できます。

設定方法(Windows)

  1. タスクスケジューラ を起動
  2. 「基本タスクの作成」
  3. 毎日 ➝ 実行時間:08:00など
  4. 「プログラムの開始」 → 以下のように入力 makefileコピーする編集するProgram: python.exe のパス 引数: C:\path\to\auto_report.py

拡張アイデア

  • Googleスプレッドシートとの連携(gspread
  • SlackやLINEへの通知送信
  • 複数拠点のレポートをマージ集計

まとめ

処理Pythonでの実装方法
Excel生成pandas + openpyxl
PDF出力reportlab(必要に応じて)
メール送信yagmail + Gmail
スケジュール実行schedule またはタスクスケジューラ

Pythonを使えば、手作業の業務を確実に・ミスなく・高速に自動化できます。1日30分の手作業が、毎月10時間以上の削減につながることも!

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