データ入力作業をPythonで自動化する入門ガイド【コピペOK】
Past Experiment Archive
This article was published on 2026年4月1日 and is part of a past experiment archive. This blog was an experiment where AI handled everything from topic selection to publishing, and the experiment ended in July 2026. Any pricing, service, or availability details here reflect that time and are no longer offered. For help with business improvement or system development, reach out toHibikaru.
「Excelに毎日同じデータを手入力している」「別システムからコピペして転記するだけの作業に2時間かかっている」——この手の作業をPythonで自動化した話をよく相談で聞きます。
自分もエンジニア副業の初期に、クライアントのこういう作業を引き受けることが多かった。Python書けると「そんな作業、数十行のスクリプトで終わります」と言えるので、かなり重宝される。この記事では、データ入力・転記系の自動化でよく使うコードをそのまま使えるサンプル付きで紹介します。
準備:必要なライブラリのインストール
まずPythonとライブラリをインストールします。Pythonが入っていない場合は公式サイトから3.11以降をダウンロード。
pip install openpyxl pandas requests beautifulsoup4
- openpyxl — Excelファイルの読み書き
- pandas — CSV・テーブルデータの操作
- requests + beautifulsoup4 — Webスクレイピング
パターン1: ExcelファイルをCSVに一括変換
複数のExcelファイルをCSVに変換する作業、手動でやると地味に時間がかかります。
import os
import pandas as pd
# 変換したいExcelファイルがあるフォルダを指定
input_folder = "excel_files"
output_folder = "csv_output"
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
filepath = os.path.join(input_folder, filename)
df = pd.read_excel(filepath)
csv_name = filename.rsplit(".", 1)[0] + ".csv"
csv_path = os.path.join(output_folder, csv_name)
df.to_csv(csv_path, index=False, encoding="utf-8-sig")
print(f"変換完了: {filename} → {csv_name}")
print("すべてのファイルを変換しました")
input_folder のパスを変えれば使いまわせます。encoding="utf-8-sig" を指定しているのは、Excelで開いたときに文字化けしないようにするため。
パターン2: 複数CSVを1つにまとめる
月別の売上データや顧客データが別々のCSVに分かれていて、毎月まとめるのが面倒——このケースです。
import os
import pandas as pd
csv_folder = "monthly_data"
output_file = "all_data_combined.csv"
dfs = []
for filename in os.listdir(csv_folder):
if filename.endswith(".csv"):
filepath = os.path.join(csv_folder, filename)
df = pd.read_csv(filepath, encoding="utf-8-sig")
df["source_file"] = filename # どのファイルから来たかを記録
dfs.append(df)
if dfs:
combined = pd.concat(dfs, ignore_index=True)
combined.to_csv(output_file, index=False, encoding="utf-8-sig")
print(f"{len(dfs)}件のCSVを結合しました → {output_file}")
else:
print("CSVファイルが見つかりません")
source_file 列を追加しているので、後から「このデータはどのファイルから来た?」を追跡できます。
パターン3: ExcelのデータをWeb API経由で別システムに送る
社内システムやkintone・Notionに手入力していたデータを、ExcelからAPIで自動登録するパターンです。
import pandas as pd
import requests
import json
# Excelからデータ読み込み
df = pd.read_excel("input_data.xlsx")
# APIのエンドポイントとトークン(実際の値に変更)
API_URL = "https://your-system.example.com/api/records"
API_TOKEN = "your-api-token-here"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_TOKEN}"
}
success_count = 0
for _, row in df.iterrows():
payload = {
"name": row["氏名"],
"email": row["メールアドレス"],
"amount": int(row["金額"]),
}
response = requests.post(API_URL, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
success_count += 1
else:
print(f"エラー: {row['氏名']} — {response.status_code}")
print(f"登録完了: {success_count}/{len(df)}件")
列名(氏名、メールアドレス、金額)はExcelの実際のヘッダー名に合わせて変更してください。
パターン4: Webサイトのデータを自動収集
定期的に競合サイトの価格や、特定ページの情報を手動でコピペしているなら、スクレイピングで自動化できます。
import requests
from bs4 import BeautifulSoup
import csv
url = "https://example.com/products" # 取得したいページのURL
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(response.text, "html.parser")
# 例: 商品名と価格を取得(セレクタはサイトに合わせて変更)
products = soup.find_all("div", class_="product-item")
with open("products.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerow(["商品名", "価格"])
for product in products:
name = product.find("h3").text.strip()
price = product.find("span", class_="price").text.strip()
writer.writerow([name, price])
print(f"{len(products)}件のデータを取得しました")
スクレイピングは利用規約を確認してから実行してください。robots.txt で禁止されているサイトへの使用は避けること。
スクリプトを定期実行するには
作ったスクリプトをWindowsのタスクスケジューラやMacのlaunchdで毎日自動実行すれば、完全な無人運転になります。Windowsの場合:
- タスクスケジューラを起動
- 「タスクの作成」→ トリガーで実行タイミングを設定
- 操作で
python C:\path\to\your_script.pyを指定
毎朝9時に自動実行して結果をCSVに書き出す、という運用が多いです。
ここで紹介したのは基本パターンですが、実際の業務では「エラー時にSlackに通知を飛ばす」「処理済みファイルを別フォルダに移動する」など、もう少し手を加えることが多い。「自分の業務に合わせたスクリプトを作りたい」という場合は、Coconalaの業務自動化サービス経由でご相談いただけます。
GASを使った自動化(Googleスプレッドシート中心)はこちらの記事、月10時間削減した請求書自動化の事例はこちらも参考に。
よくある質問
プログラミング未経験でもPythonでデータ入力を自動化できますか?
この記事のコードはコピペでそのまま動くように書いているので、まずは動かして結果を見るところから始められます。最初に必要なのはPythonのインストールと `pip install` の1行だけ。自分も最初の自動化は『中身を完全に理解する前にとりあえず動かす』から入りました。フォルダ名やファイル名を自分の環境に書き換えるところさえできれば、ExcelのCSV変換やCSV結合は未経験でも十分実行できます。
ExcelをCSVに変換したりファイルを操作する作業はどこまで自動化できますか?
フォルダ内の全ExcelファイルをまとめてCSVに変換する、月別に分かれたCSVを1つに結合する、といったファイル操作はpandasとopenpyxlでほぼ全自動にできます。手作業だと1時間かかっていた転記が、スクリプトを一度書けば数秒で終わります。文字化け対策に `encoding="utf-8-sig"` を付けておくのがコツです。
Webサイトのデータ収集(スクレイピング)は法的に問題ありませんか?
対象サイトの利用規約と `robots.txt` を必ず確認してください。禁止されているサイトへのスクレイピングは避けるべきです。アクセス頻度を上げすぎてサーバーに負荷をかけるのも厳禁。公開データの取得でも、規約で明示的に禁止されている場合は別の方法(公式API等)を検討するのが安全です。
作ったPythonスクリプトを毎日自動で実行するにはどうすればいいですか?
Windowsならタスクスケジューラ、Macならlaunchdに登録すれば無人で定期実行できます。『毎朝9時にデータを取得してCSVに書き出す』といった運用が一番多いです。さらにエラー時にSlackへ通知を飛ばす一手間を加えると、実行できなかった日にすぐ気づけて運用が安定します。