確定申告資料92件の一括リネームとGoogleスプレッドシート連携
クライアントの確定申告資料(PDF・画像・CSV)がGoogle共有ドライブに92件あり、ファイル名がバラバラだった。Claude Codeを使って命名規則に沿った一括リネームを行い、Googleスプレッドシートの管理表にドライブリンクを登録するところまでを3セッションで完了した。
背景
確定申告の時期になると、様々な金融機関や取引先から届く資料をGoogle共有ドライブに集約している。ただ、スキャンしたまま・ダウンロードしたままのファイル名では中身がわからず、毎年探すのに時間がかかっていた。今年はリネームの段階からClaude Codeに任せることにした。
命名規則の策定
まず統一的な命名規則を決めた。
2025_タイトル_金額.pdf
- 年度は
2025固定(確定申告の対象年) - タイトルは資料の種類がわかる名前(例:
源泉徴収票_○○銀行) - 金額は主要な金額を記載(収入額、控除額など)
- 期間が年度をまたぐ場合や月次資料の場合は年月情報を含める(例:
2025_01-12_カード明細)
PDFの中身を読み取ってリネーム
92件のうち、テキスト埋め込みPDFはPyPDF2で直接読めるが、スキャンPDFや画像ファイルは中身がわからない。そこでImageMagickでPDFを画像に変換し、Claude Codeに中身を読み取ってもらう流れにした。
# PDFを画像に変換(ImageMagick)
magick convert -density 150 input.pdf output.png
PyPDF2でテキスト抽出する際、一部のPDFで特殊なエンコーディング問題が発生した。null byte(\x00)が混入しているファイルがあり、テキスト抽出が途中で止まる現象が起きた。バイト列から手動でnull byteを除去してからデコードする対処を行った。
# null byte除去の対処
text = raw_bytes.replace(b'\x00', b'').decode('utf-8', errors='ignore')
バックアップとリネーム実行
リネーム前に before_renamed/ ディレクトリを作成し、全ファイルのコピーを保存した。万が一命名を間違えても元に戻せる安全策。
リネーム自体はPythonスクリプトで一括実行。ファイルの中身をClaude Codeが読み取り、命名規則に沿った新ファイル名を提案、確認後にリネームする流れ。92件を約30分で処理できた。
tax-doc-renameスキルのパッケージング
この作業は来年以降も繰り返すので、Claude Codeのスキルとしてパッケージングした。スキルには以下を含めている。
- 命名規則のルール定義
- PDF/画像の読み取り手順
- PyPDF2のエンコーディング問題の回避策
- バックアップディレクトリの自動作成
来年の確定申告時期にスキルを呼び出せば、同じ品質でリネームできる。
Googleスプレッドシートへのドライブリンク登録
リネームが終わったら、確定申告の管理スプレッドシートにドライブリンクを登録する。gogcli(Google APIのCLIツール)を使って、スプレッドシートの2025年列にリンクを一括書き込みした。
# gogcliでスプレッドシートにリンクを書き込み
gogcli sheets update --spreadsheet-id <ID> --range "2025!B2:B93" --values <リンクリスト>
スマートチップの誤解
当初、Googleスプレッドシートの「スマートチップ」機能を使えばURLを自動的にファイル名で表示してくれると思っていた。しかしスマートチップはGoogle Workspace内のリソース(ドキュメント、スライドなど)に対してのみ機能する。共有ドライブ上のPDFファイルへの直リンクでは、スマートチップによるファイル名表示は使えなかった。結局、リンクテキストを手動で設定する形に落ち着いた。
追加のレシート画像対応
メインの92件を処理した後、追加で6件のレシート画像が見つかった。同じ手順でリネームし、スプレッドシートにも追加登録した。
振り返り
- 92件 + 追加6件、合計98件のリネームとスプレッドシート登録を3セッション(合計2-3時間程度)で完了
- PDFのエンコーディング問題は想定外だったが、null byte除去で対処できた
- スキル化しておいたので、来年は命名規則の説明からやり直す必要がない
- スマートチップの仕様は事前に調べておくべきだった(試行錯誤の時間がもったいなかった)
使用ツール
| ツール | 用途 |
|---|---|
| Claude Code | ファイル中身の読み取り、リネーム名の提案・実行 |
| ImageMagick | スキャンPDFの画像変換 |
| PyPDF2 | テキスト埋め込みPDFの読み取り |
| gogcli | Googleスプレッドシートへの一括書き込み |
| Google共有ドライブ | 確定申告資料の保管場所 |