【初心者向け】Python自動化サンプルコード15選|業務効率化の始め方

kento_morota 29分で読めます

「自動化に興味はあるけれど、何から始めればいいかわからない」「サンプルコードがあればすぐに試せるのに」――そんな方に向けて、コピー&ペーストですぐに使える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ステップ:

  1. コードをコピー:記事内のコードをそのままコピー
  2. 環境に合わせて修正:ファイル名やフォルダパスなど、コメントの「ここを変更」部分を修正
  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の標準ライブラリであるosshutilを使います。追加インストール不要で、すぐに使えます。

ファイルを種類別に自動で振り分ける

ダウンロードフォルダに溜まった様々なファイルを、拡張子ごとに自動で整理します。

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つのコードから試してみて、自動化の効果を実感してください。

#Python#自動化#サンプルコード
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう