IT Hands-on Lab

小規模組織向けIT環境の構築・運用に役立つ情報を、ハンズオン形式で紹介しています。

【Excel VBA⇔Cloud】freee会計 API データ取得1

Excel VBA ⇔ Cloud データ取得・加工(freee会計API)1

Excel VBAでAPIを使用して、クラウド会計ソフト「freee会計」の取引データの取得・加工を行う例を紹介します(初めてfreee会計APIを扱う方向け)。
freee会計は日々の経理業務を自動化し、リアルタイムに経営の数字も可視化できる統合型会計ソフトです。クラウド会計ソフトにおいて国内シェアが最も高いです。法人だけでなく個人事業主でも使用できます。
  • 操作環境:
    • OS:Windows 11
    • Webブラウザー:Edge
  • 使用プラン:freee会計(スターター)、Microsoft 365 Business Premium(*)
    *デスクトップ版のExcelが使用できれば、上記プランでなくても問題ありません

なお、この記事では、VBAの使用許可や開発メニュー表示といった初期設定や、VBAエディタの使い方の説明は割愛いたします。

 

 

freee APIについて

freee APIの使用方法は、公式サイトの開発者コミュニティに掲載されています。
工程2,3ではスタートガイドを参考に利用開始設定とアプリ設定を進め、工程4以降ではAPIリファレンス(会計API)を参考に取引データの取得を確認・実装します。
開発者コミュニティは情報量が多く、初めてですと取っつきにくい印象を持たれるかもしれません。この記事では最低限必要な作業手順に絞って紹介します。

図表1-1 freee Developers Community

図表1-1 freee Developers Community

 

freee API使用開始

freee APIを初めて使用する場合、スタートガイドを参考に接続確認および事業所コードの取得を行います。

 

スタートガイドの「1.セットアップ」内の項番1.1[freeeアカウントをお持ちの方](freeeアカウントがない場合は項番1.2[freeeアカウントをお持ちでない方])のリンクを選択します。

図表2-1 freee APIスタートガイド

図表2-1 freee APIスタートガイド

 

[freee APIの利用を開始する]を選択します。
[メール到着をお待ちください]画面が表示されたら、メッセージに従い、メールを確認します。

図表2-2 freee API利用開始設定

図表2-2 freee API利用開始設定

 

画面イメージのようなメールを受信したら、[アクセストークン取得ページへ]を選択します。

図表2-3 freee APIテスト環境作成の通知メール

図表2-3 freee APIテスト環境作成の通知メール

 

[許可する]を選択します。
[クリップボードにコピー]を選択し、[APIリファレンスでCompaniesに移動]リンクを選択します。

図表2-4 freee APIテスト環境使用の許可設定

図表2-4 freee APIテスト環境使用の許可設定

 

[事業所一覧の取得]の右にある鍵マークを選択します。
[Value]欄に図表2-4でコピーしたアクセストークンをペーストし、[Authorize]を選択します。
ここで右下のような画面が表示されたら、[Servers]が「https://api.freee.co.jp」になっていることを確認し、[Authorize]を選択します。

図表2-5 freee API事業所一覧取得(アクセストークン設定)

図表2-5 freee API事業所一覧取得(アクセストークン設定)

 

[Authorized]と表示されたら、[Close]を選択します。
[Execute]を選択します。

図表2-6 freee API事業所一覧取得(実行)

図表2-6 freee API事業所一覧取得(実行)

 

[Server response]の表内の[Code]が200の行の[Response body]に表示されている、運用環境の事業所IDをメモ帳等にコピー&ペーストして控えておきます。
この事業所IDは後で取引データの取得時に必要となります。

図表2-7 freee API事業所一覧取得(実行結果確認)

図表2-7 freee API事業所一覧取得(実行結果確認)

 

freee会計APIアプリ設定

freee会計APIの取引データ取得用のアプリ設定を行います。

 

スタートガイドの[アプリケーションを作成する]を選択し、項番1の[freeeアプリストアの開発者向けアプリ一覧画面へアクセス]リンクを選択します。
[事業所アカウントを選択]画面が表示されたら、運用環境を選択します。

図表3-1 freee APIアプリ作成へ,事業所選択

図表3-1 freee APIアプリ作成へ,事業所選択

 

[開発アプリ一覧]画面が表示されたら、[新規追加]を選択します。なお、APIを使う機会が多い場合は、この一覧画面のURLをお気に入りに登録しておくと便利です。

図表3-2 freee APIアプリの新規追加へ

図表3-2 freee APIアプリの新規追加へ

 

以下の通り設定し、[作成]を選択します。

  • アプリ名、概要:(APIの用途が分かる内容を適宜入力)
  • アプリタイプ:プライベートアプリ(自組織内での利用のため)
  • 利用規約:(チェックをつける)

図表3-3 freee APIアプリ設定(基本情報)

図表3-3 freee APIアプリ設定(基本情報)

 

[権限設定]タブを選択し、取引データ取得で必要となる参照情報にチェックをつけます(この例では勘定科目、事業所、取引、品目、取引先、部門、税区分、明細)。

図表3-4 freee APIアプリ設定(権限設定)

図表3-4 freee APIアプリ設定(権限設定)

 

[基本情報]タブを選択し、[コールバックURL][Client ID][Client Secret]の値をメモ帳等にコピー&ペーストして控えておきます。また、[Webアプリ認証用URL]の値をコピーし、Webブラウザーの別タブを起動してURL欄にペーストして開きます。

図表3-5 freee APIアプリ設定(API実行に必要な値の確認)

図表3-5 freee APIアプリ設定(API実行に必要な値の確認)

 

[アプリ連携する事業所を選択する]画面で、運用環境を選択します。
[アプリ連携を開始しますか?]画面で[許可する]を選択します。

図表3-6 freee APIアプリ設定(事業所選択)

図表3-6 freee APIアプリ設定(事業所選択)

 

[コピー]を選択して、メモ帳等にペーストして控えておきます。
元の画面のタブに戻り、[下書き保存]を選択します。

図表3-7 freee APIアプリ設定(認可コード確認,保存)

図表3-7 freee APIアプリ設定(認可コード確認,保存)

 

PostmanによるAPI動作確認(推奨)

いきなりVBAで実装するのではなく、先にAPI開発ツール「Postman」でデータ取得時のデータのやりとりを確認することをおススメします。Postmanの入手方法は以前の記事を参考にしてください。

認証情報の取得方法確認

まずは工程3で控えた[Client ID]等の値を使い、認証情報(アクセストークン)の取得方法を確認します。
アクセストークンは一度しか使用できないため、二回目以降のAPI実行時は前回実行時に取得したリフレッシュトークンを用いて新たなアクセストークンとリフレッシュトークンを取得し、この新たなアクセストークンを使用する形となります。

図表4-1 freee APIアクセストークン取得の仕様確認

図表4-1 freee APIアクセストークン取得の仕様確認

 

環境を新規作成します。コレクションに直接設定値をベタ打ちもできますが、同じ接続先に色々なリクエストを試したい場合、ここで設定を変数化しておくと便利です。今回のようなにセキュアな値はタイプをシークレットにします。

  • callback_url:工程3で控えたコールバックURL
  • client_id:工程3で控えたClient ID
  • client_secret:工程3で控えたClient Secret
  • company_id:工程2の最後の方で控えた事業所ID

図表4-2 Postman freee API用の環境作成

図表4-2 Postman freee API用の環境作成

 

認可コードを使用した初回のアクセストークン取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:POST
  • URL:https://accounts.secure.freee.co.jp/public_api/token
  • Params>
    • grant_type:authorization_code
    • client_id:{{client_id}}
    • client_secret:{{client_secret}}
    • code:工程3で控えた認可コード
    • redirect_uri:{{callback_url}}
  • Headers>Content-Type:application/x-www-form-urlencoded
*{{xxx}}は環境の画面で定義した変数xxxです

図表4-3 Postmanアクセストークン取得(初回)の設定

図表4-3 Postmanアクセストークン取得(初回)の設定

 

リフレッシュトークンを使用した二回目以降のアクセストークン取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:POST
  • URL:https://accounts.secure.freee.co.jp/public_api/token
  • Params>
    • grant_type:refresh_token
    • client_id:{{client_id}}
    • client_secret:{{client_secret}}
    • redirect_uri:{{callback_url}}
    • refresh_token:(前の画面イメージ(二回目以降の場合はこの画面イメージ)のAPI実行により取得したリフレッシュトークン)
  • Headers>Content-Type:application/x-www-form-urlencoded

図表4-4 Postmanアクセストークン取得(二回目以降)の設定

図表4-4 Postmanアクセストークン取得(二回目以降)の設定

 

 

 

取引一覧の取得方法確認

取引一覧取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:GET
  • URL:https://api.freee.co.jp/api/1/deals
  • Params>
    • company_id:{{company_id}}
    • start_issue_date:(発生日(開始))
    • end_issue_date:(発生日(終了))
    • limit:100
  • Headers>Authorization:Bearer (アクセストークン)
*AuthorizationのBearerとアクセストークンの間には半角スペースが必要です。また、(アクセストークン)の()部分は不要です(値部分だけをペーストします)
*取引一覧の最大取得件数は100件のため、limit=100を設定しています。100件を超えるデータを取得したい場合はページ送りが必要となります

図表4-5 Postman取引一覧取得の設定

図表4-5 Postman取引一覧取得の設定

 

取得結果を見ると、partner_id(取引先),account_item_id(勘定科目),tax_code(税区分),item_id(品目),section_id(部門)等はコード値となっており、名称を取得するにはこれらのマスターの取得も必要となります。この後、今挙げた5種類のマスターについても一覧取得してみます。

 

各マスター一覧の取得方法確認

取引先一覧取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:GET
  • URL:https://api.freee.co.jp/api/1/partners
  • Params>
    • company_id:{{company_id}}
    • limit:3000
  • Headers>Authorization:Bearer (アクセストークン)
*取引先一覧の最大取得件数は3,000件のため、limit=3000を設定しています

図表4-6 Postman取引先一覧取得の設定

図表4-6 Postman取引先一覧取得の設定

 

勘定科目一覧取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:GET
  • URL:https://api.freee.co.jp/api/1/account_items
  • Params>company_id:{{company_id}}
  • Headers>Authorization:Bearer (アクセストークン)

図表4-7 Postman勘定科目一覧取得の設定

図表4-7 Postman勘定科目一覧取得の設定

 

税区分一覧取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:GET
  • URL:https://api.freee.co.jp/api/1/taxes/codes
  • Params>company_id:{{company_id}}
  • Headers>Authorization:Bearer (アクセストークン)

図表4-8 Postman税区分一覧取得の設定

図表4-8 Postman税区分一覧取得の設定

 

品目一覧取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:GE
  • URL:https://api.freee.co.jp/api/1/items
  • Params>
    • company_id:{{company_id}}
    • limit:3000
  • Headers>Authorization:Bearer (アクセストークン)
*品目一覧の最大取得件数は3,000件のため、limit=3000を設定しています

図表4-9 Postman品目一覧取得の設定

図表4-9 Postman品目一覧取得の設定

 

部門一覧取得の設定を行います。設定できたら、[Send]を選択します。

  • メソッド:GET
  • URL:https://api.freee.co.jp/api/1/sections
  • Params>company_id:{{company_id}}
  • Headers>Authorization:Bearer (アクセストークン)

図表4-10 Postman部門一覧取得の設定

図表4-10 Postman部門一覧取得の設定


上記画面イメージの通り、この環境では部門が未設定です。未設定の場合を考慮したデータ取得の例として、この後、Excel VBAで部門もあえて取得するような実装としてみます。

 

Excel VBA処理の流れの整理

大まかな処理の流れを整理しておきます。
工程4で確認した通り、取引データは取引先や勘定科目等、コード値しか保有していない項目があります。これらの項目のマスターデータも取得し、取引データと各マスターのデータを結合した結果を出力する形とします。

図表5-1 ExcelVBAの処理の流れ

図表5-1 ExcelVBAの処理の流れ

 

また、以下は今回のデータ取得に関する補足事項です。

  • セグメントとメモタグのマスターデータの取得は割愛しました
  • 取引先と品目のマスターデータの取得において、ページ送りは考慮していません
  • 取引先のマスターデータにおいて、書類送付方法の取得は割愛しました

 

Excelファイル用意

VBAを実行するExcelファイルを用意します(拡張子はxlsm)。

  • Menuシート:発生日(範囲)を指定し、[データ取得]ボタン(ActiveXコントロール)を押すと、freee会計APIに接続し、データ取得・加工を行います。なお、[今年一年]ボタンを押すと、発生日(範囲)に今年一年間が設定されます。

図表6-1 ExcelファイルのMainシート

図表6-1 ExcelファイルのMainシート

 

  • Searchシート:Menuシートの[データ取得]ボタンを押した後、各マスターと取引データ(deals~sectionsシート)を結合した結果がこのシートに出力されます。

図表6-2 ExcelファイルのSearchシート

図表6-2 ExcelファイルのSearchシート

 

  • paramシート:工程2,3で控えた事業所IDやClient ID等の値を定義しておきます。なお、アクセストークンとリフレッシュトークンは、Mainシートの[データ取得]ボタンを押すと更新されます。

図表6-3 Excelファイルのparamシート

図表6-3 Excelファイルのparamシート

 

  • deals~sectionsシート: Menuシートの[データ取得]ボタンを押した後、各マスターや取引データの一覧データが出力されます。これらのシートのデータは、Searchシートに結合したデータを出力する際の元データになります。

図表6-4 Excelファイルのdeals~sectionsシート

図表6-4 Excelファイルのdeals~sectionsシート

 

  • VBAプロジェクト:Mainシート上にソースを実装します。画面に表示されているのは、データ取得ボタンクリック時にデータ取得・加工の関数を呼び出すソースと、今年一年ボタンクリック時に発生日(範囲)の値をセットするソースです。他のソースは次の記事で取り上げます。

図表6-5 ExcelファイルのVBAプロジェクト

図表6-5 ExcelファイルのVBAプロジェクト

 

APIのデータのやり取りはJson型というデータフォーマットを使用します。こちらのサイトにVBA用の変換モジュールJsonConverter.basがあるので、ダウンロードします。

図表6-6 GitHubのVBA-JSON変換モジュール入手

図表6-6 GitHubのVBA-JSON変換モジュール入手

 

ダウンロードしたZIPを展開しておきます。VBAのプロジェクトエクスプローラ上で右クリックし、[ファイルのインポート]を選択します。
展開したファイル内のJsonConverter.basを選択します。
VBAのプロジェクトエクスプローラー上に、[標準モジュール>JsonConverter]が表示されます。

図表6-7 VBA-JSON変換モジュールのインポート

図表6-7 VBA-JSON変換モジュールのインポート

 

[ツール>参照設定]を選択し、[Microsoft Scripting Runtime]のチェックをオンにします。これが未実施の場合、API呼び出し時のHTTPリクエストオブジェクトの作成でエラーが発生します。

図表6-8 VBAプロジェクトの参照設定

図表6-8 VBAプロジェクトの参照設定

 

次の記事(ソースの紹介)に続きます。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

 

当ブログ内の関連記事

elmgrn.hatenablog.com