「自動化に興味はあるけれど、何から始めればいいかわからない」「サンプルコードがあればすぐに試せるのに」――そんな方に向けて、コピー&ペーストですぐに使えるPython自動化のサンプルコードを15本厳選しました。
本記事では、ファイル操作・Excel処理・メール送信など、実務で即役立つPython自動化コードを実例とともに紹介します。
Pythonで業務を自動化するとは?基本を理解しよう
毎日同じExcelファイルを開いて、同じデータをコピー&ペーストしていませんか?Python自動化とは、こうした繰り返し作業をプログラムに任せ、人間はより創造的な業務に集中できるようにすることです。
プログラミング未経験の方でも、サンプルコードをコピーして少し修正するだけで、驚くほど簡単に業務効率化を実現できます。Python自動化の全体像や基本的な考え方についてはPython自動化のやり方完全ガイドで解説しています。この記事では、実際にすぐ使えるPython自動化のサンプルコード15選をご紹介します。
自動化に向いている業務の見分け方
すべての業務が自動化に適しているわけではありません。以下の特徴に当てはまる業務は、Python自動化で大きな効果が期待できます。
自動化に向いている業務:
- 毎日・毎週同じ手順で行う繰り返し作業
- 「〇〇の場合は△△する」と条件が明確
- 数十件以上のファイルやデータを扱う大量処理
- コピペや転記など人的ミスが起きやすい作業
自動化に向いていない業務:
- 状況に応じた柔軟な判断が必要
- 明確なルールがなく「だいたいこんな感じ」という基準
- デザインや企画立案などクリエイティブな要素が強い
例えば、「毎週月曜日に全支店の売上データをExcelで集計」は自動化に最適です。一方、「顧客の要望に応じた提案書作成」は個別判断が必要なため完全自動化は困難です。
Python自動化に必要な準備
Pythonで自動化を始めるために必要な準備は、思っているよりもシンプルです。
1. Pythonのインストール 公式サイト(python.org)から最新版をダウンロードし、インストール時に「Add Python to PATH」にチェックを入れるだけです。5分程度で完了します。
2. 必要なライブラリのインストール 用途に応じて以下のライブラリを使います。「pip install ライブラリ名」とコマンドを打つだけでインストールできます。
- openpyxl / pandas:Excel操作用
- smtplib:メール送信用(標準搭載)
- BeautifulSoup / Selenium:Webスクレイピング用
3. コードエディタの準備 Visual Studio Code(VS Code)という無料のエディタがおすすめです。コードの色分けや入力補助機能があり、初心者でも格段に書きやすくなります。
必要な予算:0円 準備時間:30分〜1時間程度
サンプルコードの使い方
この記事で紹介するサンプルコードは、コピー&ペーストして、一部を自分の環境に合わせて修正するだけで使えます。
基本的な3ステップ:
- コードをコピー:記事内のコードをそのままコピー
- 環境に合わせて修正:ファイル名やフォルダパスなど、コメントの「ここを変更」部分を修正
- 実行して確認:まずはテストデータで動作確認
注意点:
- 元のファイルは必ず別の場所にバックアップ
- いきなり本番データで実行せず、小規模なテストから開始
- エラーメッセージをよく読むと解決のヒントがある
【Excel自動化】データ処理を効率化するサンプルコード3選
Excel業務は中小企業の業務効率化において、最も効果が出やすい領域です。PythonとExcelの連携による業務改善についてはPython×Excel業務効率化入門でも詳しく紹介しています。毎月数時間かかっていた集計作業が、ボタン一つで数秒で終わるようになります。
PythonでExcel操作を行う際は、主に2つのライブラリを使います。openpyxlはExcelファイルの読み書きや書式設定に、pandasは大量データの集計・分析に特化しています。
複数のExcelファイルを1つにまとめる
各支店や部署から送られてくる同じ形式のExcelファイルを、一瞬で統合できます。
import pandas as pd
import glob
# ここを変更:自分のフォルダパスに変更
folder_path = "C:/Users/YourName/Documents/売上データ/"
files = glob.glob(folder_path + "*.xlsx")
# 空のデータフレームを準備
all_data = pd.DataFrame()
# 各ファイルを読み込んで結合
for file in files:
df = pd.read_excel(file)
all_data = pd.concat([all_data, df], ignore_index=True)
# ここを変更:保存先とファイル名を指定
all_data.to_excel("統合データ.xlsx", index=False)
print(f"{len(files)}個のファイルを統合しました")
活用例:
- 全支店の月次売上報告を統合
- 複数部署の在庫データを一元管理
- 各営業担当の日報を週次で集約
このコードで、10個のファイルを手作業で開いてコピペする作業(約30分)が5秒で完了します。
Excelデータから自動でグラフを作成する
毎週同じ形式のグラフを作っているなら、このコードが役立ちます。
import openpyxl
from openpyxl.chart import BarChart, Reference
# ここを変更:対象ファイルのパス
wb = openpyxl.load_workbook("月次売上.xlsx")
ws = wb.active
# 棒グラフを作成
chart = BarChart()
chart.title = "月別売上推移"
chart.x_axis.title = "月"
chart.y_axis.title = "売上(万円)"
# ここを変更:実際のデータ範囲に合わせる
data = Reference(ws, min_col=2, min_row=1, max_row=13)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
ws.add_chart(chart, "D2")
wb.save("月次売上_グラフ付き.xlsx")
print("グラフを作成しました")
活用例:週次の営業成績グラフ自動生成、月次の経費推移グラフ作成、在庫状況の可視化レポート
条件に合ったデータを抽出してレポート化する
「売上が100万円以上の顧客だけ抽出」など、条件に合うデータを抽出する作業を自動化します。
import pandas as pd
# ここを変更:対象ファイルのパス
df = pd.read_excel("顧客リスト.xlsx")
# ここを変更:抽出条件を指定
# 例1:売上が100万円以上
high_value_customers = df[df["売上金額"] >= 1000000]
# 例2:複数条件
active_high_value = df[(df["売上金額"] >= 1000000) & (df["ステータス"] == "継続中")]
# 例3:特定期間のデータ
df["契約日"] = pd.to_datetime(df["契約日"])
recent_customers = df[df["契約日"] >= "2024-01-01"]
# ここを変更:保存先ファイル名
high_value_customers.to_excel("優良顧客リスト.xlsx", index=False)
print(f"{len(high_value_customers)}件の該当データを抽出しました")
活用例:月次の優良顧客レポート作成、期限切れ間近の契約リスト抽出、特定条件の在庫アラート作成
【ファイル・フォルダ管理】整理整頓を自動化するサンプルコード3選
デスクトップやダウンロードフォルダが散らかっていて、必要なファイルを探すのに時間がかかる――これは多くの企業で見られる「隠れた非効率」です。
ファイル管理の自動化には、Pythonの標準ライブラリであるosとshutilを使います。追加インストール不要で、すぐに使えます。
ファイルを種類別に自動で振り分ける
ダウンロードフォルダに溜まった様々なファイルを、拡張子ごとに自動で整理します。
import os
import shutil
# ここを変更:整理したいフォルダのパス
source_folder = "C:/Users/YourName/Downloads/"
# ファイルの種類ごとの振り分け先フォルダ
folders = {
"画像": [".jpg", ".jpeg", ".png", ".gif"],
"PDF": [".pdf"],
"Excel": [".xlsx", ".xls", ".csv"],
"Word": [".docx", ".doc"],
"その他": []
}
# 振り分け先フォルダを作成
for folder_name in folders.keys():
folder_path = os.path.join(source_folder, folder_name)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# ファイルを振り分け
for filename in os.listdir(source_folder):
file_path = os.path.join(source_folder, filename)
if os.path.isdir(file_path):
continue
file_ext = os.path.splitext(filename)[1].lower()
moved = False
for folder_name, extensions in folders.items():
if file_ext in extensions:
dest = os.path.join(source_folder, folder_name, filename)
shutil.move(file_path, dest)
moved = True
break
if not moved:
dest = os.path.join(source_folder, "その他", filename)
shutil.move(file_path, dest)
print("ファイルの整理が完了しました")
活用例:ダウンロードフォルダの定期整理、プロジェクトファイルの種類別整理、共有フォルダの自動整頓
このスクリプトをタスクスケジューラ(Windows)やcron(Mac)で毎日実行すれば、常に整理された状態を保てます。
連番フォルダを一括作成する
プロジェクトごとのフォルダや、連番ファイルを大量に作る必要がある場合に便利です。
import os
# ここを変更:フォルダを作成する場所
base_path = "C:/Users/YourName/Documents/プロジェクト/"
# ここを変更:作成したいフォルダ数
for i in range(1, 11):
folder_name = f"案件_{i:03d}"
folder_path = os.path.join(base_path, folder_name)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# 各フォルダ内にサブフォルダも作成
sub_folders = ["資料", "画像", "納品物"]
for sub in sub_folders:
os.makedirs(os.path.join(folder_path, sub))
print("フォルダ作成が完了しました")
活用例:新規プロジェクト用のフォルダ構成を一括作成、年度初めの月次フォルダ準備、セミナー参加者用の個別フォルダ作成
古いファイルを自動でバックアップする
一定期間経過したファイルを自動でバックアップします。
import os
import shutil
from datetime import datetime, timedelta
# ここを変更:対象フォルダとバックアップ先
source_folder = "C:/Users/YourName/Documents/作業中/"
backup_folder = "C:/Users/YourName/Documents/バックアップ/"
# ここを変更:何日前のファイルを対象にするか
days_old = 30
cutoff_date = datetime.now() - timedelta(days=days_old)
if not os.path.exists(backup_folder):
os.makedirs(backup_folder)
for filename in os.listdir(source_folder):
file_path = os.path.join(source_folder, filename)
if os.path.isdir(file_path):
continue
file_mtime = datetime.fromtimestamp(os.path.getmtime(file_path))
if file_mtime < cutoff_date:
backup_path = os.path.join(backup_folder, filename)
shutil.move(file_path, backup_path)
print(f"バックアップ: {filename}")
print("バックアップが完了しました")
活用例:完了プロジェクトファイルの自動アーカイブ、一時ファイルの定期削除、ログファイルの世代管理
【メール・通知】コミュニケーション業務を自動化するサンプルコード3選
定型メールの送信や、リマインド通知など、繰り返し発生するコミュニケーション業務も自動化できます。
Pythonでメール送信を行うには、標準ライブラリのsmtplibを使います。Gmail、Outlook、独自ドメインのメールなど、ほぼすべてのメールサービスに対応しています。
セキュリティ上の注意点:
- Gmailの場合、2段階認証を有効にしてアプリパスワードを生成
- パスワードを直接書かず、環境変数や設定ファイルで管理
- 誤送信防止のため、まずテストアドレスで確認
定型メールを自動送信する
毎週同じ内容のメールを送る場合や、問い合わせへの自動返信などに活用できます。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# ここを変更:メール設定
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your-email@gmail.com"
sender_password = "your-app-password"
# ここを変更:送信先と内容
receiver_email = "customer@example.com"
subject = "お問い合わせありがとうございます"
body = """
〇〇様
お問い合わせいただき、ありがとうございます。
担当者より2営業日以内にご連絡させていただきます。
---
株式会社〇〇
"""
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
message.attach(MIMEText(body, "plain"))
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender_email, sender_password)
server.send_message(message)
server.quit()
print("メールを送信しました")
except Exception as e:
print(f"エラーが発生しました: {e}")
活用例:問い合わせへの自動返信、定期的な顧客へのフォローメール、社内への週次レポート送信
添付ファイル付きメールを一括送信する
請求書や報告書など、添付ファイル付きのメールを複数の宛先に送る場合に便利です。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import pandas as pd
import os
# メール設定
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your-email@gmail.com"
sender_password = "your-app-password"
# ここを変更:送信先リストと添付ファイル
recipients_df = pd.read_excel("送信先リスト.xlsx")
attachment_path = "C:/Users/YourName/Documents/請求書.pdf"
for index, row in recipients_df.iterrows():
receiver_email = row["メールアドレス"]
company_name = row["会社名"]
person_name = row["担当者名"]
subject = f"【{company_name}様】請求書送付のご案内"
body = f"""
{person_name}様
いつもお世話になっております。
今月分の請求書を添付にてお送りいたします。
---
株式会社〇〇
"""
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
message.attach(MIMEText(body, "plain"))
with open(attachment_path, "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= {os.path.basename(attachment_path)}",
)
message.attach(part)
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender_email, sender_password)
server.send_message(message)
server.quit()
print(f"{company_name}様に送信完了")
except Exception as e:
print(f"{company_name}様への送信失敗: {e}")
活用例:月次請求書の一括送付、セミナー資料の参加者への配布、契約書類の取引先への送付
Slackへ自動通知する
メールだけでなく、Slackなどのチャットツールへの通知も自動化できます。Slackとの本格的な連携方法はSlack API×Python連携ガイドで詳しく解説しています。
import requests
import json
# ここを変更:SlackのWebhook URL
webhook_url = "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
message = {
"text": "【自動通知】本日の売上レポート",
"attachments": [
{
"color": "good",
"fields": [
{
"title": "本日の売上",
"value": "¥1,250,000",
"short": True
},
{
"title": "目標達成率",
"value": "105%",
"short": True
}
]
}
]
}
response = requests.post(
webhook_url,
data=json.dumps(message),
headers={"Content-Type": "application/json"}
)
if response.status_code == 200:
print("Slackに通知しました")
else:
print(f"エラー: {response.status_code}")
活用例:システムエラーの即時通知、日次・週次の業績レポート配信、重要な問い合わせのアラート
【Webスクレイピング】情報収集を自動化するサンプルコード3選
競合他社の価格調査、業界ニュースの収集、市場動向の把握など、Web上の情報収集も自動化できます。
主要なライブラリ:
- Beautiful Soup:HTMLを解析してデータを抽出(静的なページ向け)
- Selenium:ブラウザを自動操作(JavaScriptで動的に生成されるページ向け)
法的・倫理的な注意点:
- 利用規約を確認し、スクレイピングを禁止しているサイトは避ける
- robots.txtを尊重し、サイトのルールに従う
- 過度なアクセスでサーバーに負荷をかけない(間隔を空ける)
Webサイトから最新情報を自動取得する
ニュースサイトやブログから、特定のキーワードに関する最新記事を自動収集します。
import requests
from bs4 import BeautifulSoup
import pandas as pd
# ここを変更:スクレイピング対象のURL
url = "https://example-news-site.com/"
response = requests.get(url)
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "html.parser")
# ここを変更:サイトの構造に応じて調整
articles = []
for item in soup.find_all("article", class_="news-item"):
title = item.find("h2").text.strip()
link = item.find("a")["href"]
date = item.find("time").text.strip()
articles.append({
"タイトル": title,
"リンク": link,
"日付": date
})
df = pd.DataFrame(articles)
df.to_excel("最新ニュース.xlsx", index=False)
print(f"{len(articles)}件の記事を取得しました")
活用例:業界ニュースの毎日の自動収集、競合他社のプレスリリース監視、特定キーワードの記事収集
競合他社の価格情報を定期的に収集する
ECサイトなどから価格情報を定期的に収集し、価格動向を把握します。
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime
import time
# ここを変更:監視したい商品のURL
product_urls = [
"https://example-shop.com/product1",
"https://example-shop.com/product2",
]
price_data = []
for url in product_urls:
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# ここを変更:サイトの構造に応じて調整
product_name = soup.find("h1", class_="product-title").text.strip()
price = soup.find("span", class_="price").text.strip()
price_data.append({
"日付": datetime.now().strftime("%Y-%m-%d"),
"商品名": product_name,
"価格": price,
"URL": url
})
time.sleep(2) # サーバーへの負荷を避けるため待機
df = pd.DataFrame(price_data)
df.to_excel("価格調査結果.xlsx", index=False)
print("価格情報を取得しました")
活用例:競合他社の価格監視、自社商品の市場価格調査、在庫状況の定期チェック
ニュースサイトから業界情報を抽出する
特定の業界や技術に関する最新情報を自動で収集し、レポート化します。
import requests
from bs4 import BeautifulSoup
import pandas as pd
# ここを変更:検索キーワード
keyword = "AI 業務効率化"
search_url = f"https://news.google.com/search?q={keyword}"
response = requests.get(search_url)
soup = BeautifulSoup(response.text, "html.parser")
articles = []
for item in soup.find_all("article")[:10]: # 上位10件
try:
title = item.find("h3").text
link = item.find("a")["href"]
articles.append({
"タイトル": title,
"リンク": f"https://news.google.com{link}",
})
except:
continue
df = pd.DataFrame(articles)
df.to_excel("業界ニュース.xlsx", index=False)
print(f"{len(articles)}件の記事を収集しました")
活用例:業界トレンドの週次レポート作成、技術動向の自動収集、競合分析のための情報収集
【Word・PDF操作】文書作成を自動化するサンプルコード3選
請求書や報告書など、定型文書の作成も自動化できます。python-docx(Word操作)とPyPDF2(PDF操作)を使います。
テンプレートから請求書を自動作成する
Wordテンプレートに顧客情報や金額を自動で差し込み、請求書を大量作成します。
from docx import Document
import pandas as pd
# ここを変更:テンプレートファイルと顧客リスト
template_path = "請求書テンプレート.docx"
customers_df = pd.read_excel("顧客リスト.xlsx")
for index, row in customers_df.iterrows():
doc = Document(template_path)
# テンプレート内の置換対象文字列を実際のデータに置換
for paragraph in doc.paragraphs:
if "{{会社名}}" in paragraph.text:
paragraph.text = paragraph.text.replace("{{会社名}}", row["会社名"])
if "{{金額}}" in paragraph.text:
paragraph.text = paragraph.text.replace("{{金額}}", f"¥{row['金額']:,}")
if "{{日付}}" in paragraph.text:
paragraph.text = paragraph.text.replace("{{日付}}", row["請求日"])
# 保存
output_filename = f"請求書_{row['会社名']}.docx"
doc.save(output_filename)
print(f"{output_filename}を作成しました")
活用例:月次請求書の一括作成、契約書の自動生成、報告書のテンプレート活用
複数のPDFファイルを結合する
複数のPDFファイルを1つにまとめます。
from PyPDF2 import PdfMerger
import glob
# ここを変更:結合したいPDFがあるフォルダ
pdf_folder = "C:/Users/YourName/Documents/PDF/"
pdf_files = glob.glob(pdf_folder + "*.pdf")
merger = PdfMerger()
for pdf in sorted(pdf_files):
merger.append(pdf)
print(f"{pdf}を追加しました")
# ここを変更:出力ファイル名
merger.write("結合済みPDF.pdf")
merger.close()
print("PDFの結合が完了しました")
活用例:複数の見積書を1つのPDFにまとめる、月次レポートの統合、契約書類の一括化
WordファイルをPDFに一括変換する
複数のWordファイルを一括でPDF化します。
from docx2pdf import convert
import glob
# ここを変更:変換したいWordファイルがあるフォルダ
word_folder = "C:/Users/YourName/Documents/Word/"
word_files = glob.glob(word_folder + "*.docx")
for word_file in word_files:
pdf_file = word_file.replace(".docx", ".pdf")
convert(word_file, pdf_file)
print(f"{word_file}をPDFに変換しました")
print("すべての変換が完了しました")
活用例:提案書のPDF化、社内文書の配布用PDF作成、契約書の最終版PDF化
自動化を成功させるための実践ステップ
Python自動化のサンプルコードを紹介してきましたが、実際に業務に定着させるにはコツがあります。
小さく始めて徐々に拡大する
いきなり大規模な自動化を目指すと失敗しやすくなります。以下のステップで進めましょう。
ステップ1:効果が出やすい業務から始める
- 毎日発生する繰り返し作業
- ルールが明確で単純な処理
- 失敗してもリスクが小さい業務
ステップ2:小規模なテストで検証
- 本番データではなく、テストデータで動作確認
- 1週間程度の試験運用で問題点を洗い出し
- エラー処理やバックアップの仕組みを追加
ステップ3:成功体験を積んで拡大
- 1つの自動化で効果を実感してから次へ
- 成功事例を社内で共有
- 他の業務への横展開を検討
自動化が定着しない理由と対策
多くの企業で自動化が定着しない3つの理由と、その対策をご紹介します。
理由1:属人化してしまう → 対策:コードにコメントを残し、実行手順書を作成。複数人で共有できる仕組みを作る
理由2:メンテナンスされない → 対策:定期的な動作確認の仕組みを作る。エラー時の通知機能を実装
理由3:使い方が分からない → 対策:シンプルな操作方法にする。必要に応じてGUIツール化も検討
専門家に相談すべきタイミング
以下のような場合は、専門家のサポートを受けることで、より効果的な自動化が実現できます。
- 複数のシステムを連携させる必要がある
- セキュリティやコンプライアンスの考慮が必要
- 社内にPythonの知識を持つ人がいない
- 自動化の範囲が広く、どこから手をつけるべきか分からない
Harmonic Societyでは、中小企業向けの「ちょうどいい」自動化支援を提供しています。業務分析から実装、定着支援まで一気通貫でサポートしますので、お気軽にご相談ください。
---
この記事で紹介したPython自動化のサンプルコード15選を活用すれば、明日からすぐに業務効率化を始められます。まずは1つのコードから試してみて、自動化の効果を実感してください。