スポンサーリンク

【業務効率化】Pythonで自動レポートを作る方法|Excel・PDF・メール送信まで一括自動化!

自動化スクリプト
  1. はじめに|レポート作成の手間をPythonで解消しよう
  2. 2. 事前準備|必要なライブラリと環境設定
    1. ✅ Pythonがまだインストールされていない方へ
      1. ▼ Pythonの公式サイト(Windows / Mac 対応)
    2. ✅ 必要なライブラリ一覧
    3. ✅ 仮想環境の作成(おすすめ)
    4. ✅ ライブラリのインストール
    5. ✅ Gmailでメール送信を使う予定の方へ
  3. 3. ステップ1|Excelレポートを自動生成する
    1. 📊 サンプルで作るレポート内容
    2. 🧰 使用ライブラリの確認
    3. 🧪 ステップ1:データの準備
    4. 💾 ステップ2:Excelファイルに保存
    5. 📈 ステップ3:商品別の売上グラフを追加
    6. 🧩 ステップ4:グラフ画像をExcelに貼り付け(おまけ)
    7. ✅ ここまでのまとめ
  4. 4. ステップ2|レポートをPDFで出力する
    1. 🔧 今回使うライブラリ
    2. 📦 まずはライブラリをインストール
    3. 📝 PDF出力のコード例
    4. ✅ 実行するとこうなる!
    5. 📌 PDF出力のポイント
    6. 💡 おまけ:HTMLテンプレートでPDF出力したい人は?
  5. 5. ステップ3|レポートをメールで自動送信する
    1. 📦 必要なライブラリ
    2. 🔐 Gmailの設定(事前に必要)
      1. ▼ アプリパスワードの手順:
    3. 📤 メール送信コード例(PDF添付つき)
    4. ✅ 補足:エラーが出たときの対処法
    5. 📌 メール送信の自動化でできること
  6. 6. 応用例|スケジューラーと組み合わせて毎朝9時に送る
    1. 🔁 方法は2パターン
    2. ✅ 方法1:scheduleライブラリで毎日9時に実行
      1. ▼ ライブラリのインストール
      2. ▼ サンプルコード(関数を毎朝9時に実行)
    3. ✅ 方法2:Windowsタスクスケジューラで自動実行
      1. ▼ 設定手順(カンタンです!)
    4. ⏰ その他Tips
  7. 7. まとめ|手動作業からの卒業で毎日をもっと効率的に
    1. ✅ 自動レポート作成の流れ
    2. 💡 最後にアドバイス
  8. よくある質問(Q&A)
    1. 関連投稿:

はじめに|レポート作成の手間をPythonで解消しよう

みなさん、毎日のレポート作成や資料作りにこんな悩みはありませんか?

  • 毎日同じようなExcelファイルを手作業で作っている…
  • 書類をPDFに変換して、メールで送る作業がめんどう…
  • できるだけ時間をかけずに、正確にレポートを作りたい!

そんなときに役立つのが Python(パイソン) です。
Pythonは、ちょっとした作業を自動化するのが得意なプログラミング言語で、「手作業でやっていたことを、ボタンひとつで一気に片付ける」こともできるんです。

たとえば、こんなことができます:

  • 毎日決まったデータをもとに Excelでレポートを自動生成
  • レポートをきれいな PDFに変換
  • さらにそれを メールで自動送信

これがすべてPythonのスクリプト(自動処理のプログラム)でできるので、慣れてくると「もう手作業には戻れない!」という声も多いです。


この記事では、Pythonを使って

  1. Excelファイルの作成
  2. PDFファイルへの変換
  3. メールでの自動送信

という3ステップをわかりやすく紹介していきます。

「Pythonは初心者だから不安…」という方でも大丈夫!
基本から順番に解説するので、プログラミング未経験の方でも安心して読み進められますよ。

一度スクリプトを作っておけば、毎日、毎週のレポート作業がたった数秒で終わるようになります。
それでは一緒に、業務効率化の第一歩を踏み出してみましょう!




2. 事前準備|必要なライブラリと環境設定

Pythonでレポートを自動化するには、あらかじめいくつかの準備が必要です。
この章では、Pythonのインストールから必要なライブラリの導入方法まで、ていねいに解説していきます。


✅ Pythonがまだインストールされていない方へ

まずはPythonをインストールしましょう。

▼ Pythonの公式サイト(Windows / Mac 対応)

Download Python
The official home of the Python Programming Language

上記ページから最新版をダウンロードして、画面の案内にそってインストールします。
Windowsの方は、「Add Python to PATH」にチェックを入れるのを忘れずに!

もしインストール方法が不安な方は、こちらの記事も参考になります:
👉 【Python入門1】WindowsでPythonを始めよう!IDLEのインストールと基本の使い方ガイド


✅ 必要なライブラリ一覧

Pythonで自動レポートを作るには、次のような便利なライブラリを使います。

ライブラリ名役割
pandas表形式のデータ処理(Excel操作に便利)
openpyxlExcelファイルの読み書き
matplotlibグラフの作成
reportlabPDFファイルの生成
smtplib / emailメールの送信

✅ 仮想環境の作成(おすすめ)

プロジェクトごとに環境を分けると、他の開発に影響が出にくくなります。

python -m venv report-env
source report-env/bin/activate # Mac/Linux の場合
report-env\Scripts\activate # Windows の場合

✅ ライブラリのインストール

次のコマンドを順番に実行しましょう(仮想環境を有効にしたあとでOKです):

pip install pandas openpyxl matplotlib reportlab

✅ Gmailでメール送信を使う予定の方へ

Gmailアカウントでメールを自動送信する場合は、以下を設定しておくと安心です。

  • 2段階認証をONにする
  • アプリパスワードを発行する(通常のパスワードでは送信できません)

設定方法は後ほど「メール自動送信」の章でくわしく解説します!

これで準備は完了です!

次はいよいよ、「Excelレポートの自動生成」に進みます。
日報や営業資料など、よく使うレポートをPythonで一気に作ってみましょう!




3. ステップ1|Excelレポートを自動生成する

それではいよいよ、Pythonで「Excelレポートを自動生成」してみましょう!

今回は「売上レポート」を例にして、表の作成 → グラフ作成 → Excel保存までの流れをステップごとに解説していきます。


📊 サンプルで作るレポート内容

たとえば、こんな売上データを使ってレポートを作るとします:

日付商品名売上数単価
2025-06-01ノート5300
2025-06-01ペン10100
2025-06-02ノート3300
2025-06-02ペン7100

このデータをもとに、「合計売上」「商品ごとの集計グラフ」付きのExcelファイルを自動で作ってみます!


🧰 使用ライブラリの確認

まずは次のライブラリを使います:

import pandas as pd
import matplotlib.pyplot as plt
from openpyxl import load_workbook

🧪 ステップ1:データの準備

data = {
'日付': ['2025-06-01', '2025-06-01', '2025-06-02', '2025-06-02'],
'商品名': ['ノート', 'ペン', 'ノート', 'ペン'],
'売上数': [5, 10, 3, 7],
'単価': [300, 100, 300, 100]
}

df = pd.DataFrame(data)
df['売上合計'] = df['売上数'] * df['単価']

💾 ステップ2:Excelファイルに保存

file_name = '売上レポート.xlsx'
df.to_excel(file_name, index=False)

これで、売上合計列つきのExcelファイルが作成されました!


📈 ステップ3:商品別の売上グラフを追加

# 商品ごとの売上合計を集計
grouped = df.groupby('商品名')['売上合計'].sum()

# グラフ作成
plt.figure(figsize=(6, 4))
grouped.plot(kind='bar')
plt.title('商品別売上合計')
plt.ylabel('金額(円)')
plt.tight_layout()
plt.savefig('sales_chart.png')
plt.close()

これで「商品ごとの売上グラフ」が画像ファイルとして保存されます。


🧩 ステップ4:グラフ画像をExcelに貼り付け(おまけ)

from openpyxl.drawing.image import Image as ExcelImage

book = load_workbook(file_name)
sheet = book.active

img = ExcelImage('sales_chart.png')
sheet.add_image(img, 'F2') # F2セルに画像を貼る

book.save(file_name)

これで完成!
Excelファイルにはデータとグラフの両方が入っていて、提出用レポートとしてそのまま使えます!


✅ ここまでのまとめ

  • pandasでデータフレームを作って、
  • openpyxlでExcelに保存し、
  • matplotlibでグラフを作成し、
  • グラフ画像をExcelに貼り付ける!

という流れでした。




4. ステップ2|レポートをPDFで出力する

Excelレポートが完成したら、次は「PDFファイル」として出力してみましょう!

PDFは、レイアウトが崩れにくく、印刷やメール送信にも便利ですよね。
Pythonなら、これも自動でできちゃいます!


🔧 今回使うライブラリ

PDF出力には、以下のどちらかの方法が使えます:

方法内容
reportlabPDFを1から作成。完全カスタマイズ可能。
pdfkit + wkhtmltopdfHTMLレイアウトをPDF化(見た目がきれい)。

今回は、初心者にも扱いやすい reportlab を使って、「PDFでレポートを出力する」方法を解説します。


📦 まずはライブラリをインストール

まだインストールしていない方は、以下を実行してください:

pip install reportlab

📝 PDF出力のコード例

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas

# PDFファイル名
file_name = "売上レポート.pdf"

# PDFキャンバス作成(A4サイズ)
c = canvas.Canvas(file_name, pagesize=A4)
width, height = A4

# タイトル
c.setFont("Helvetica-Bold", 16)
c.drawString(100, height - 50, "売上レポート(2025年6月)")

# 見出し
c.setFont("Helvetica", 12)
c.drawString(50, height - 100, "日付 商品名 売上数 単価 売上合計")

# サンプルデータ(実際はDataFrameからループしてもOK)
data = [
['2025-06-01', 'ノート', 5, 300, 1500],
['2025-06-01', 'ペン', 10, 100, 1000],
['2025-06-02', 'ノート', 3, 300, 900],
['2025-06-02', 'ペン', 7, 100, 700]
]

# 表の出力
y = height - 130
for row in data:
row_str = ' '.join(map(str, row))
c.drawString(50, y, row_str)
y -= 20 # 行間

# 保存
c.save()
print("PDFファイルが作成されました!")

✅ 実行するとこうなる!

  • タイトルつきのA4レポートが出力されます
  • 各行の売上情報がきれいに並んで表示されます
  • レイアウトやフォントも自由に調整可能!

📌 PDF出力のポイント

  • drawString(x, y, テキスト)でテキストの配置ができます(左下が原点)
  • ループを使えば、DataFrameの行をすべてPDFに出力できます
  • グラフをPDFに追加するには、画像として一度保存 → drawImage()で貼り付け可能です

💡 おまけ:HTMLテンプレートでPDF出力したい人は?

よりきれいなデザインにしたい人は、以下の方法もおすすめです:

  • pdfkit + wkhtmltopdf(HTML+CSSで見た目を整えてからPDF化)
  • Jinja2などでテンプレートにデータを差し込み → 自動PDF出力

これは中級向けですが、別記事で紹介予定です!




5. ステップ3|レポートをメールで自動送信する

PDFのレポートが完成したら、あとは「メールで自動送信」までできたら最高ですよね!
Pythonを使えば、レポート作成から送信までを完全自動化できます。

ここでは、Gmailアカウントを使ってPDFファイルをメールで送る方法を紹介します。


📦 必要なライブラリ

標準ライブラリなので、インストールは不要です。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

🔐 Gmailの設定(事前に必要)

Gmailを使う場合は、アプリパスワードを発行しておく必要があります。

▼ アプリパスワードの手順:

  1. Googleアカウント にログイン
  2. 「セキュリティ」→「2段階認証プロセス」を有効にする
  3. 「アプリ パスワード」を生成(例:Python Mail など)
  4. 生成された16文字のコードを控える(これが「メール送信パスワード」になります)

📤 メール送信コード例(PDF添付つき)

# メール送信設定
from_address = 'あなたのメールアドレス@gmail.com'
to_address = '相手のメールアドレス@example.com'
subject = '売上レポート(自動送信)'
body = 'お疲れ様です。\n売上レポートをお送りします。\nご確認よろしくお願いします。'

# PDFファイルの名前
filename = '売上レポート.pdf'

# メールオブジェクトを作成
msg = MIMEMultipart()
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject

# 本文追加
msg.attach(MIMEText(body, 'plain'))

# 添付ファイル(PDF)
with open(filename, 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())

encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename= {filename}')
msg.attach(part)

# SMTPサーバに接続して送信
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_address, 'アプリパスワード') # ←ここにアプリパスワードを入れる
server.send_message(msg)
server.quit()

print("メールを送信しました!")

✅ 補足:エラーが出たときの対処法

  • 「SMTPAuthenticationError」が出る場合は:
    → アプリパスワードが間違っていないか確認
    → 通常のGmailパスワードではログインできません!
  • 「送信先が間違っている」と出る場合:
    to_address のアドレス形式(@以降含め)をもう一度見直してみましょう

📌 メール送信の自動化でできること

  • レポートを 毎朝自動送信
  • ファイル名に日付を入れることも可能(例:売上レポート_2025-06-04.pdf)
  • CCやBCCも送れる(msg['Cc']msg['Bcc'] を追加)

これで、Excel → PDF → メール送信までの完全自動レポート作成フローが完成です!




6. 応用例|スケジューラーと組み合わせて毎朝9時に送る

「レポートを自動で作って、PDFにして、メールで送る」――ここまでできたら、
あとは**「毎日決まった時間に自動で実行される」**ようにすれば、完全自動化の完成です!

この章では、Pythonスクリプトを毎朝9時に自動実行する方法を紹介します。


🔁 方法は2パターン

方法特徴
scheduleライブラリPython内でスケジュールを管理。シンプルで柔軟。
タスクスケジューラ(Windows)OSレベルで自動実行。PC起動中に限り確実に動作。

✅ 方法1:scheduleライブラリで毎日9時に実行

まずはPython内で完結するやり方から。

▼ ライブラリのインストール

pip install schedule

▼ サンプルコード(関数を毎朝9時に実行)

import schedule
import time

def job():
print("レポートを作成して送信します!")
# ここにExcel → PDF → メール送信の一連の処理を呼び出す
# report_auto_generate_and_send()

schedule.every().day.at("09:00").do(job)

print("スケジュールを開始します。終了するにはCtrl+Cを押してください。")

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

💡このコードは実行中ずっと待機して、毎日9時に処理を自動実行します。

⚠ 注意:このスクリプトは常に起動しておく必要があります。PCを閉じたりスリープすると動作しません。


✅ 方法2:Windowsタスクスケジューラで自動実行

より確実に実行したい場合は、**Windowsの標準機能「タスクスケジューラ」**がおすすめです。

▼ 設定手順(カンタンです!)

  1. スタートメニューで「タスクスケジューラ」と検索し、起動
  2. 右側の「基本タスクの作成」をクリック
  3. タスク名を入力(例:毎日レポート送信)
  4. 「毎日」を選択し、開始時刻を「9:00」に設定
  5. 「プログラムの開始」→ Pythonの実行ファイルを選ぶ(例:C:\Python311\python.exe
  6. 「引数の追加」にスクリプト名を入力(例:C:\Users\あなた\report.py

これだけで、毎朝9時に自動でスクリプトが実行されるようになります!


⏰ その他Tips

  • 複数のスクリプトを順に実行したいときは、バッチファイル(.bat)でまとめると便利
  • ログファイルを保存して、実行結果を記録するのもおすすめです
  • エラー発生時の通知方法(Slack連携やLINE通知)も応用で可能です



7. まとめ|手動作業からの卒業で毎日をもっと効率的に

ここまで読んでくださってありがとうございます!
この記事では、Pythonを使ってレポート作成を自動化する方法をステップごとに紹介してきました。

もう一度、おさらいしておきましょう👇


✅ 自動レポート作成の流れ

  1. Excelファイルを自動生成
     → pandasとopenpyxlで売上データや業務データを成形!
  2. PDFファイルに出力
     → reportlabを使ってきれいに印刷用レポートに変換!
  3. メールで自動送信
     → smtplibとemailモジュールでPDFを添付して送信!
  4. 毎日9時に自動実行
     → scheduleライブラリやタスクスケジューラで完全自動化!

このように、Pythonのスクリプトを一度作ってしまえば、毎日の面倒なレポート作業を一気にラクにできます。

特に事務職・営業職・管理職など、日報・週報・月報を提出することが多い人には、まさに“働き方改革”レベルの効果が期待できます!


💡 最後にアドバイス

  • 最初はシンプルなスクリプトから始めてOK!
  • 少しずつカスタマイズして、自分だけの「自動レポート職人」になろう!
  • トラブルが起きたら、原因を1つずつチェックすれば大丈夫!

Pythonを味方につけて、あなたの毎日の作業をもっとスマートにしていきましょう!

それでは、次回の記事もお楽しみに!


よくある質問(Q&A)

Q
Python初心者でも自動レポート作成はできますか?
A

はい、大丈夫です!
この記事ではステップごとにやさしく解説しているので、Pythonに触れたことがない人でも実践できます。コピペOKなサンプルコード付きなので安心です。

Q
ExcelやPDFに日本語を含めても大丈夫ですか?
A

基本的には問題ありませんが、PDF出力時には日本語フォントが使えないことがあります。
その場合は reportlab に日本語フォント(例:IPAフォント)を登録することで対応できます。

Q
Gmail以外のメールアカウントでも自動送信できますか?
A

はい、可能です。
OutlookやYahooメールなども smtplib を使って送信できますが、それぞれSMTPサーバー情報や認証方法が異なるため、事前に調べておきましょう。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク