請求書やカード利用明細の取得を自動化しても、それぞれのプログラムを毎回個別に実行する必要があれば、日常業務の負担は十分には減りません。
そこで今回は、これまでに作成した6つの自動取得処理を一つにまとめ、順番に実行できる仕組みを作りました。
さらに、実行結果をログへ記録し、Windowsのタスクスケジューラから定期的に実行できるようにしています。
今回の連載の最終回として、個別に作成したプログラムを日常的に運用する仕組みへまとめた過程と、ChatGPTと人がどのように役割を分担したかを紹介します。
これまでに自動化した6つの業務
2026年9月、当事務所では次の6つの請求書・領収書・カード利用明細の取得を自動化しました。
- 税務・会計事務所向けサービスを提供するエッサムの請求書
- 書類保管サービスであるストレージサービスの請求書
- クラウドPBX等を提供するベルテクノスの領収書
- ビューカードの利用明細
- 三井住友カードの利用明細
- 三菱UFJニコスの利用明細
各処理の詳しい内容は、これまでの記事で紹介しています。
請求書取得の自動化については、「Gmailの通知から請求書・領収書を自動取得した実録|3社の異なる仕組みに対応」をご覧ください。
カード利用明細の自動取得については、「カード利用明細を自動取得した実録|ビューカード・三井住友カード・三菱UFJニコスに対応」で紹介しています。
また、自動化にPower Automate Desktopではなく、PythonとPlaywrightを採用した経緯や、人とAIの役割分担については、「税理士事務所がChatGPTで請求書取得を自動化した実録|人とAIの役割分担も紹介」で解説しています。
個別のプログラムを作るだけでは運用しにくい
当初は、サービスごとに個別のプログラムを作成していました。
個別のプログラムが正しく動作すれば、それぞれの請求書や利用明細を取得できます。しかし、毎回6つのプログラムを一つずつ起動し、処理結果を確認するのでは手間がかかります。
また、処理の途中で問題が発生した場合に、どのサービスで止まったのか、ほかの処理は実行されたのかが分かりにくくなります。
そこで、次の条件を満たす共通の実行プログラムを作成しました。
- 6つの処理を決められた順番で実行する
- 一つの処理でエラーが発生しても、残りの処理を続ける
- サービスごとの処理結果を記録する
- すべての処理が終わった後に成功・エラーを確認できる
- Windowsのタスクスケジューラから実行できる
個別のプログラムを作る段階から、日常的に運用できる仕組みへ進めた形です。
6つの処理を一つのプログラムから実行
共通の実行プログラムでは、6つの自動取得処理を次の順番で実行します。
- エッサム
- ストレージサービス
- ベルテクノス
- ビューカード
- 三井住友カード
- 三菱UFJニコス
今回は、複数の処理を同時に動かすのではなく、一つずつ順番に実行する構成にしました。
各処理では共通のChromeプロファイルを利用しています。同じプロファイルを複数のプログラムが同時に操作すると、ブラウザーの起動やログイン状態の利用で競合する可能性があります。
処理時間を短くすることよりも、安定して実行できることを優先しました。
共通Chromeプロファイルでログイン状態を利用
請求書やカード利用明細を取得するには、各サービスへのログインが必要です。
今回の仕組みでは、自動化専用パソコンに経理自動化用の共通Chromeプロファイルを用意しました。通常業務で使用するブラウザーとは分けています。
共通Chromeプロファイルとは、自動取得に使用するChromeの設定やログイン状態を、専用の保存領域で管理する方法です。
これにより、自動取得プログラムは、日常業務で使用しているブラウザーへ影響を与えずに動作できます。
必要なログイン情報についても、一部のサービスごとに個別のファイルへ持たせる方法から、共通の認証情報を参照する方式へ整理しました。
ただし、ログイン情報をPythonのコードへ直接書き込むことはしていません。認証情報は暗号化して保存し、それを利用するための情報とは分けて管理しています。
また、追加認証が求められた場合やログイン状態が無効になった場合には、人が内容を確認して対応します。
CドライブとGドライブの役割を分ける
今回の仕組みでは、自動化専用パソコンのCドライブと、Googleドライブを割り当てたGドライブの役割を分けました。
Cドライブには、主に次のものを置いています。
- Pythonなどの実行環境
- 自動化に使用する共通Chromeプロファイル
- パソコン内で保持する必要がある設定
- 定期実行のために必要な最小限のファイル
Gドライブには、主に次のものを置いています。
- サービスごとのPythonプログラム
- 共通処理
- 6つの処理を呼び出す実行プログラム
- Gmail APIに関する設定
- 暗号化した認証情報
- 処理済みメールの管理情報
- 実行ログ
- 取得した請求書や利用明細
プログラム、ログ、取得した書類をGドライブ側へまとめることで、保存場所を確認しやすくしました。
一方、ブラウザーのプロファイルは、Googleドライブによる同期の影響を受けにくいようにCドライブへ置いています。
すべてを同じ場所へ保存するのではなく、用途に応じて保存場所を分けることにしました。
実行結果をログへ記録する
自動化は、画面を見ながら手動で実行する場合だけでなく、タスクスケジューラから自動的に実行されます。
そのため、後から結果を確認できるログが必要です。
共通の実行プログラムでは、主に次の内容を記録します。
- 実行を開始した日時
- 実行したサービス名
- 各プログラムが表示した内容
- 正常終了したか
- エラーが発生したか
- すべての処理が終了した日時
一つの処理でエラーが発生した場合でも、その時点で全体を終了せず、可能な範囲で次の処理へ進むようにしました。
最後に、6つすべてが正常に終了したか、いずれかでエラーが発生したかを終了コードで示します。
すべて正常であれば「0」、一つでもエラーがあれば「1」を返す構成です。
これにより、タスクスケジューラ側でも、プログラムが正常に終了したかどうかを判定できます。
日本語を含むログの文字化けにも対応
各プログラムの実行結果には、日本語のメッセージが含まれます。
Windowsで複数のPythonプログラムを呼び出すと、文字コードの違いにより、ログに記録された日本語が文字化けする場合があります。
今回は、各プログラムから出力された内容の文字コードを調整し、できるだけ同じ形式でログへ記録できるようにしました。
請求書を取得できたかどうかだけでなく、どの処理で問題が起きたのかを日本語で確認できるため、エラーが発生したときの確認がしやすくなります。
古い設定が残っているとエラーの原因になる
仕組みを作っている途中では、Chromeプロファイルの保存場所や、各プログラムの配置を変更しました。
このような変更を行うと、以前使用していたフォルダーや設定を参照する記述が残ることがあります。
実際に、現在は使用していないChromeプロファイルの保存場所を参照している処理があり、整理が必要になりました。
共通化するときには、単に複数のプログラムを呼び出すだけではなく、次のような項目も確認する必要があります。
- 各プログラムが参照しているフォルダー
- Chromeプロファイルの保存場所
- 認証情報の保存場所
- PDFの保存先
- ログの保存先
- 古い設定や不要なファイルが残っていないか
個別には動いていたプログラムでも、保存場所や設定を統一すると、新たな問題が見つかることがあります。
重複して取得しない仕組み
同じ請求書や利用明細を、実行するたびに重複して保存しないことも重要です。
メールを起点にする処理では、処理済みのメールを記録します。さらに、同じ名前のファイルが保存先に存在するかも確認します。
ただし、対象メールを見つけただけで処理済みにはしません。
請求書や領収書の保存が正常に完了した後に、処理済みとして記録するようにしました。
保存に失敗した段階で処理済みにしてしまうと、次回の実行時にそのメールが対象外となり、書類を取得できなくなる可能性があるためです。
カード利用明細についても、対象期間や既存ファイルを確認し、同じ明細を繰り返し保存しないようにしています。
タスクスケジューラで定期的に実行
共通の実行プログラムは、Windowsのタスクスケジューラへ登録しました。
タスクスケジューラは、指定した日時やパソコンへのログオン時などに、プログラムを自動的に実行するWindowsの機能です。
今回の設定では、主に次の項目を指定しています。
- 実行するPython
- 共通の実行プログラム
- プログラムを実行する作業フォルダー
- 実行するタイミング
- パソコンの電源状態に関する条件
- ユーザーがログオンしている状態で実行すること
Pythonのプログラムをタスクスケジューラから実行する場合、プログラムのファイル名だけでなく、どのフォルダーを基準に実行するかも重要です。
作業フォルダーの指定が適切でないと、手動では動くのにタスクスケジューラからは動かないことがあります。
「0x0」だけでは取得結果まで判断できない
Windowsのタスクスケジューラで「この操作を正しく終了しました(0x0)」と表示されれば、登録した処理自体は正常に終了したと判断できます。
ただし、「0x0」と表示されたからといって、必ずしもすべての請求書や利用明細が新たに取得されたとは限りません。
例えば、次のような場合があります。
- 対象となる新しいメールがなかった
- 対象期間の利用明細がまだ発行されていなかった
- 同じファイルがすでに保存されていた
- ログイン後に追加認証が求められた
- ウェブサイトの表示が変わっていた
そのため、タスクスケジューラの実行結果だけでなく、共通ログや保存先のファイルも確認する必要があります。
自動化後も、必要な書類が正しく保存されているかを人が確認する運用にしています。
自動化しても人の確認はなくならない
今回の仕組みでは、請求書や利用明細の取得、ファイル名の変更、指定フォルダーへの保存などを自動化しました。
しかし、自動化したからといって、人による確認が不要になるわけではありません。
当事務所では、主に次の項目を確認します。
- 必要な請求書や利用明細が保存されているか
- 対象期間が正しいか
- ファイル名が所定の形式になっているか
- PDFを正常に開けるか
- 同じファイルが重複していないか
- エラーがログに記録されていないか
自動化の目的は、人の判断をなくすことではありません。
繰り返し発生する取得や保存の操作をプログラムへ任せ、人は結果の確認や例外への対応に集中できるようにすることです。
ウェブサイトの変更に応じた保守が必要
Playwrightを使用した自動取得は、各サービスのウェブサイトをブラウザーで操作しています。
そのため、ウェブサイトの構成やボタンの名称、ログイン方法などが変更されると、それまで動いていたプログラムが動かなくなることがあります。
また、次のような変化も想定しておく必要があります。
- ログイン画面の変更
- 追加認証の導入
- メールの件名や本文の変更
- PDFの発行方法の変更
- ブラウザーやPlaywrightの更新
- 保存先フォルダーの変更
自動化は、一度作れば永久にそのまま使えるものではありません。
ログを確認し、問題が見つかったときに修正できる状態を維持することも、運用の一部です。
ChatGPTの提案を理解してから採用する
自動化を進めていると、ChatGPTから、私がそれまで知らなかったツールや実装方法を提案されることがありました。
その場合、提案されたものをすぐに採用するのではなく、次のような点をChatGPTへ質問しました。
- そのツールは何をするものなのか
- 今回の処理で、なぜ必要なのか
- ほかの方法と比べて、どのような利点があるのか
- 利用するうえでの注意点やリスクは何か
- 当事務所の運用に適しているか
回答を確認し、自分なりに内容に納得できたものを採用しています。
ChatGPTが提案した内容であっても、実際に導入するかどうかを決めるのは人です。特にログイン情報や請求書などを扱う仕組みでは、便利そうだからという理由だけで採用せず、仕組みや保存場所、安全性を確認する必要があります。
生成AIへ入力する情報の範囲や、顧客情報・税務判断を安全に扱うための考え方は、「会計事務所が生成AIを安全に利用するためのルール|顧客情報・税務判断の注意点【2026年版】」で整理しています。
PythonのコードはChatGPTが作成
私は、自分でPythonのコードを最初から書けるわけではありません。
今回の自動取得プログラムでは、実現したい処理をChatGPTへ説明し、必要なPythonのコードを作成してもらいました。そのコードをパソコンで実行し、表示された画面やエラーメッセージを私が確認して、結果をChatGPTへ伝えます。
ChatGPTは、その結果を踏まえてコードを修正します。この作業を繰り返しながら、少しずつ自動化の仕組みを形にしていきました。
今回の役割分担を整理すると、次のようになります。
| 担当 | 主な役割 |
|---|---|
| 私 | 自動化する業務の選定、必要な処理の説明、パソコンでの実行、画面や動作の確認、採否の判断 |
| ChatGPT | 実現方法の提案、使用するツールの説明、Pythonコードの作成、エラー原因の整理、修正案の提示 |
ChatGPTがコードを書いても、実際のウェブサイトで正しく動くとは限りません。画面の構成や認証方法はサービスごとに異なるため、最終的には人が動作を確認し、期待した結果になっているかを判断する必要があります。
Visual Studio Codeを使いながら作業
Pythonのコードを編集・実行するために、今回はVisual Studio Codeも利用しました。
Visual Studio Codeは、Microsoftが提供しているコードエディターです。一般に「VS Code」と呼ばれており、Pythonなどのプログラムを記述・編集できるほか、フォルダー内のファイルを確認したり、ターミナルからプログラムを実行したりできます。
私はVS Codeの操作にも詳しかったわけではないため、次のようなこともChatGPTへ質問しながら作業しました。
- 作成されたコードをどのファイルへ保存するか
- VS Codeで対象のフォルダーを開く方法
- Pythonプログラムを実行する方法
- ターミナルに表示されたエラーの確認方法
- 修正されたコードへ差し替える方法
- 必要なライブラリを導入する方法
プログラムの作り方だけでなく、コードを編集して実行するための道具の使い方についても、その都度ChatGPTから説明を受けながら進めました。
考えていた仕組みを実現するための強力な武器
もしChatGPTの支援を受けず、Python、Playwright、VS Codeなどをゼロから調べながら今回の仕組みを作っていたら、どれほどの期間がかかったか分かりません。そもそも、6つの請求書・明細取得処理を一つの仕組みとして実現できていたかどうかも分かりません。
生成AIを利用したことで、自分が知らない技術について説明を受け、内容を確認しながら、その技術を実際の業務へ取り入れられました。
重要なのは、生成AIへすべてを任せることではありません。
「どの業務を、どのように改善したいか」を人が考え、生成AIの提案を理解したうえで採用し、実際の動作と結果を人が確認することが必要です。
自分ではコードを書けなくても、実現したいことを具体的に説明し、提案された方法を一つずつ理解しながら進めれば、これまで形にできなかったアイデアを実際の仕組みにできる可能性があります。
今回の経験から、ChatGPTをはじめとする生成AIは、頭の中にある業務改善のアイデアを実現するための強力な武器になると感じました。
まとめ
今回は、個別に作成した6つの請求書・明細取得処理を、一つのプログラムから順番に実行できるようにしました。
さらに、共通Chromeプロファイル、認証情報の管理、実行ログ、重複防止、Windowsのタスクスケジューラを組み合わせ、日常的に運用できる仕組みへまとめています。
今回のポイントは、次のとおりです。
- 6つの自動取得処理を一つのプログラムから順番に実行する
- 共通Chromeプロファイルでログイン状態を利用する
- 認証情報をPythonのコードへ直接書き込まない
- サービスごとの実行結果をログへ残す
- 一つの処理でエラーが起きても、残りの処理を続ける
- タスクスケジューラから定期的に実行する
- 自動取得後も、人が結果を確認する
- ウェブサイトなどの変更に応じて保守する
自動化する内容を考えたのは私ですが、使用する技術の選定、Pythonコードの作成、エラー原因の整理や修正案の提示にはChatGPTを利用しました。
私は、提案された技術について質問し、内容に納得したうえで採用し、実際のパソコンで操作して結果を確認しました。
人が目的と判断を担い、生成AIが技術的な実現方法を支援することで、プログラミングの経験がなくても、考えていた業務改善を具体的な仕組みにできました。
今回で、税理士事務所における請求書・カード利用明細の取得自動化に関する全4回の実録は終了です。
今後も、実際の運用状況を確認しながら、必要に応じて処理の追加や改善を進めていきます。
※この記事は、2026年9月に当事務所で構築・検証した内容をもとに作成しています。ウェブサイトの仕様、各サービスの認証方法、ソフトウェアの機能等は変更される場合があります。
新星パートナーズ会計事務所
代表・税理士 井河 伸郎
税務・会計に関する記事は、専門家の立場から内容を確認しています。
本記事は、一般的な情報の提供を目的としています。個別の取引や税務上の取扱いについては、契約内容や事実関係によって判断が異なる場合があります。また、掲載内容は記事作成時点の情報に基づいています。最新の情報は、各サービスの公式サイトや関係機関の公表資料をご確認ください。

