日々のルーチン業務、「Excel集計」「PDFレポート作成」「メール送信」などを自動で毎朝8時に実行できたら、どれだけ楽になるでしょうか?
本記事では、Pythonを使って以下を自動化するツールの作り方を紹介します。
この記事でわかること
- PythonでExcelやPDFレポートを自動生成する方法
- スケジュール実行(毎朝決まった時間に動かす)設定
- 自動メール送信まで含めた業務自動化の全体像
1. ツールの完成イメージと全体構成
このツールでは以下のことを自動化します
手順 | 内容 |
---|---|
① | データをCSV/DBから読み込み |
② | Excelレポートを生成 |
③ | PDFとして出力(オプション) |
④ | メールで自動送信(報告) |
⑤ | Windowsタスクスケジューラで毎朝実行 |
業務の手作業を丸ごとPythonに任せる構成です。
2. 必要なライブラリ一覧
pip install pandas openpyxl matplotlib reportlab schedule yagmail
ライブラリ | 用途 |
---|---|
pandas | データ操作 |
openpyxl | Excelファイルの生成 |
matplotlib | グラフの作成 |
reportlab | PDF出力(任意) |
schedule | スケジュール実行制御 |
yagmail | Gmailを使ったメール送信 |
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)
タスクスケジューラ
を起動- 「基本タスクの作成」
- 毎日 ➝ 実行時間:08:00など
- 「プログラムの開始」 → 以下のように入力 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時間以上の削減につながることも!