業務効率化したいビジネスパーソン・エンジニア必見!
PythonとExcelを組み合わせて「日報自動化」 を実現するスクリプトを10個紹介します。
✅ 対象読者
Excelで毎日日報を手作業で作成している人
Python初級~中級者
業務効率化に興味がある方
🔧 前提環境
Python 3.9以上
使用ライブラリ
pip install openpyxl pandas jinja2
💡 1. テンプレートを元に日報を作成するスクリプト
from openpyxl import load_workbook
from datetime import datetime
template = 'daily_template.xlsx'
output = f'daily_{datetime.now().strftime("%Y%m%d")}.xlsx'
wb = load_workbook(template)
ws = wb.active
ws['B2'] = datetime.now().strftime('%Y/%m/%d')
ws['B3'] = '本日の作業内容を記入しました'
wb.save(output)
💡 2. 複数人の日報を一括作成
import pandas as pd
from openpyxl import load_workbook
df = pd.read_csv('members.csv') # 名前や部署の一覧
for _, row in df.iterrows():
wb = load_workbook('daily_template.xlsx')
ws = wb.active
ws['B2'] = datetime.now().strftime('%Y/%m/%d')
ws['B3'] = f"{row['name']} さんの作業内容"
wb.save(f"{row['name']}_日報_{datetime.now().strftime('%Y%m%d')}.xlsx")
💡 3. 作業時間の自動計算
start = datetime(2025, 7, 24, 9, 0)
end = datetime(2025, 7, 24, 18, 30)
work_time = end - start
print(f"作業時間: {work_time}")
💡 4. pandasでタスク実績を整形して書き出す
import pandas as pd
data = [
{"時間帯": "09:00-10:00", "内容": "メール確認"},
{"時間帯": "10:00-12:00", "内容": "データ分析"},
{"時間帯": "13:00-15:00", "内容": "資料作成"},
]
df = pd.DataFrame(data)
df.to_excel('task_log.xlsx', index=False)
💡 5. Excelテンプレートへの自動転記(Jinja2風)
from openpyxl import load_workbook
tasks = ["朝会", "開発", "レビュー", "資料作成"]
wb = load_workbook('daily_template.xlsx')
ws = wb.active
for i, task in enumerate(tasks, start=5):
ws[f'A{i}'] = task
wb.save('daily_filled.xlsx')
💡 6. スクリプトからグラフ付き日報作成
import openpyxl
from openpyxl.chart import BarChart, Reference
wb = openpyxl.Workbook()
ws = wb.active
data = [("作業", "時間"), ("開発", 5), ("会議", 2), ("資料", 1)]
for row in data:
ws.append(row)
chart = BarChart()
chart.add_data(Reference(ws, min_col=2, min_row=2, max_row=4))
chart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=4))
ws.add_chart(chart, "E5")
wb.save("daily_chart.xlsx")
💡 7. OneDriveや共有フォルダに自動保存
import shutil
shutil.copy("daily_filled.xlsx", "C:/Users/yourname/OneDrive/日報/")
💡 8. メール添付で送信(smtplib)
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg['Subject'] = '本日の日報'
msg['From'] = 'your@email.com'
msg['To'] = 'manager@email.com'
msg.set_content('日報を添付します')
with open('daily_filled.xlsx', 'rb') as f:
msg.add_attachment(f.read(), maintype='application',
subtype='vnd.openxmlformats-officedocument.spreadsheetml.sheet',
filename='daily.xlsx')
with smtplib.SMTP('smtp.example.com', 587) as s:
s.starttls()
s.login('your@email.com', 'password')
s.send_message(msg)
💡 9. 日報の差分自動検出(前日との比較)
df_today = pd.read_excel('daily_20250724.xlsx')
df_yesterday = pd.read_excel('daily_20250723.xlsx')
diff = df_today.compare(df_yesterday)
print(diff)
💡 10. CLIで入力して日報自動生成
name = input("名前を入力してください: ")
task = input("今日の作業内容を入力してください: ")
from openpyxl import load_workbook
wb = load_workbook('daily_template.xlsx')
ws = wb.active
ws['B2'] = name
ws['B3'] = task
wb.save(f'{name}_daily_{datetime.now().strftime("%Y%m%d")}.xlsx')
📌 まとめ:Python × Excel日報の自動化は簡単!
テンプレートを使えば誰でも実践可能
pandasやopenpyxlの使い方が分かれば応用自在
ルーティン業務から自由になろう!
🔗 関連リンク
【2025年最新】PythonでExcel業務を全自動化する方法