ChatGPTに請求書作成を自動作成するpythonコードを書いてもらった(実際のコードあり)
請求書の作成について、どこまで簡略化できるのか試してみました。
昔から請求書を作成するのが億劫で、可能な限り工数を削減したいというのがモチベーションになっています。
今までは以下のような流れで作業をしていました。
①エクスプローラーから請求書の雛形Excelを探す
②雛形Excelをコピーする
③雛形Excelを開く
④雛形Excelに会社名、内容、個数、単価、請求日のセルを入力
⑤ctrl + PでPDFに出力
⑥出力されたPDFのファイル名を変更する(日付、会社名を変更)
⑦間違いがないか確認する
ChatGPTとpythonを駆使して作った流れがこちら
①コマンドプロンプトを開く
②指定のメモ帳を開くコマンドを入力(コマンドは単語帳に登録し、すぐ呼び出せるようにしておく)
②開いたメモ帳で日付、内容、金額、を入力し、保存する
③コマンドプロンプトで指定のpythonスクリプトを実行して、Excelを更新し、同時にPDFを作成する(コマンドは単語帳に登録しておく)
④間違いがないか確認する
最初はすごく時短になるのでは!?と思って作っていたけど、
蓋を開いてみると、わりと小幅な成果になったのかなと。
具体的に減った作業は以下でした。
・雛形Excelを探して開く→コマンドで一発で開く
・PDF化する作業→pythonで処理
・ファイルの名前を変更する→pythonで処理
削減時間が1分くらいかな。。
削減時間よりかは、工数が減って請求書を作る心理的なハードルが下がったのが、一番大きな成果になるのかもしれない。
売上管理にNotionを使っているので、Notionのテーブルビューの情報を引っ張って来て、Excelに直接入力したい!と思って色々試行錯誤してみたけど、自分の力量では難しかったです。
※csvでテキスト情報をエクスポートできるけど、その作業やるなら、メモ帳に手打ちした方が早いと思って諦めました
実際のコード
from openpyxl import load_workbook
from datetime import datetime
import win32com.client as win32
# 更新する値が記載されたテキストファイルのパス
updates_file = r"テキストファイルのパス"
# Excelファイルのパス(ここでfile_pathを定義)
file_path = r"Excelファイルのパス"
# ワークブックを読み込む
wb = load_workbook(filename=file_path)
# 編集するシートを選択
sheet = wb['python用']
# テキストファイルから更新する値を読み込む
updates = {}
with open(updates_file, 'r', encoding='utf-8') as f:
for line in f:
key, value = line.strip().split(',')
updates[key] = value
# 更新するセルの対応を設定
cell_mapping = {
"会社名": "C6",
"内容": "C17",
"個数": "F17",
"単価": "H17",
"請求日": "I2",
}
# セルを更新
for key, value in updates.items():
cell = cell_mapping[key]
sheet[cell] = int(value) if key in ["個数", "単価"] else value
# 今日の日付をYYMMDD形式で取得
today = datetime.now().strftime("%y%m%d")
# 会社名を変数から取得
company_name = updates["会社名"]
# ファイルを保存する新しいパスをフォーマット
output_base_path = r"新しいパス"
new_file_path = f"{output_base_path}\{today}_00_{company_name}.xlsx"
# ワークブックを保存
wb.save(filename=new_file_path)
# Excelを開始してPDFに変換
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False # ExcelのGUIを非表示に
try:
# ワークブックを開く
wb = excel.Workbooks.Open(new_file_path)
# PDFファイルのパス
pdf_file_path = new_file_path.replace('.xlsx', '.pdf')
# PDFとしてエクスポート
wb.ExportAsFixedFormat(0, pdf_file_path)
finally:
# ワークブックを閉じ、Excelを終了
wb.Close(False)
excel.Quit()
# 終了メッセージ
print(f"Excelファイルが保存されました: {new_file_path}")
print(f"PDFが保存されました: {pdf_file_path}")
この記事が気に入ったらサポートをしてみませんか?