システム連携ネタでよくブログを書いている日下です。

あるお客様からのご相談で、会計システム freee との API 連携について検証し、実現できることを確認しました。
以下、その連携の設定方法についてまとめます。

※これを使えば、経費精算の承認フローからの会計システムへの入力までの自動化等が実現できますね。

目次
1: freee と Questetra を連携したい背景
2: freee と Questetra を連携するための設定
 2.1: freee 側の OAuth 設定
 2.2: Questetra 側の OAuth 設定
 2.3: Questetra から freee API を呼び出す設定
3: まとめ

1: freee と Questetra を連携したい背景

ご相談をいただいたお客様では Questetra で経費支出を管理されています。また、経費を使う場合には基本的にクレジットカードを利用されています。そのクレジットカード側の情報を freee に取り込んでレコードが作成されます。そして Questetra で入力された内容を元に、freee の経費支出レコードの適用欄に手入力をされていました。
その作業に手間がかかるため自動化したい、と相談をいただき、検証を行いました。

2: freee と Questetra を連携するための設定

freee Developer 向けリファレンス を見ると REST API があり、認証には OAuth2 が使えることがわかります。

OAuth2 の設定詳細は以下の記事を参考にしてください。ここでは freee との連携特有の内容にしぼって記載します。
※関連記事:Questetra から他サービスの REST API を呼び出す場合の設定(Questetra が OAuth2 クライアントになる場合)


※freee の開発者向けアカウントについては、以下のページから登録できるかと思ったのですが、まだこのページは準備中のようでした。
 freee Developers スタートガイド
問合せをしてみると、
 会計 freee の事業所(無料プラン)を利用すれば OK、無料プランでも API は利用できる。
 ただ、会計 freee 上からは登録内容が1か月分しか確認できない仕様であることについて注意して。
といったお話でした。

2.1: freee 側の OAuth 設定

freee のリファレンスの「はじめに」に沿って、freee 側で新しいアプリケーションの登録を行います。

  • 「アプリケーション名」、「利用用途」:自分がわかるように入力
  • 「コールバック URI」:参考記事の通り、Questetra 側の OAuth 設定画面で確認して入力

保存すると、「App ID」、「Secret」が取得できるのでメモしておきます。

2.2: Questetra 側の OAuth 設定

freee のリファレンスの「仕様」に記載されている情報を元に設定して、トークンを取得します。

  • 「認可エンドポイントURL」:https://secure.freee.co.jp/oauth/authorize
  • 「トークンエンドポイントURL」:https://secure.freee.co.jp/oauth/token
  • 「クライアントID」、「クライアントシークレット」: 2.1 の freee 側の設定で取得した「App ID」、「Secret」を入力

2.3: Questetra から freee API を呼び出す設定

今回検証した API は以下になります。

  • Companies(事業所)の GET 一覧取得
  • Deals(取引)の GET 一覧取得/POST 作成/PUT 更新

「メッセージ送信中間イベント(HTTP)」を使えばカンタンに呼出できました。
※関連マニュアル:M225: 業務データを組み込んだHTTPリクエストが、自動的に送信されるように設定する

Companies(事業所)の GET 一覧取得 は、呼出 URL の指定だけですので、カンタンです。
また Deals(取引)の GET 一覧取得 も、呼出 URL に 必須パラメータの company_id を足すだけです。company_id は Companies(事業所)の GET 一覧取得 で取得した id を指定すれば OK。

Deals(取引)の POST 作成/PUT 更新 については、リファレンス上で必須になっている項目以外にも必要なものがありました(必須項目だけの JSON を送ってみたらエラーに・・・)。会計 freee 上で手動にて取引データを作って、Deals(取引)の GET 一覧取得 でどういう JSON データが返ってくるかをまず確認。それを元にデータを準備してようやくうまくいきました。ただし、GET 一覧取得 した JSON データをそのままは使えない(必要となる JSON データフォーマットが少し異なる)ので注意要です。
また、POST 作成/PUT 更新 については、送付データ JSON の準備が必要なため、「データ更新」か「スクリプトタスク」が必要になります。
※関連マニュアル:M227: 業務データの結合や四則演算が自動実行されるように設定する
※関連マニュアル:M230: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)

あと、Deals(取引)の対象レコード特定は、発生日・金額・口座を条件に考えていたのですが、抽出条件に金額や口座は指定できなかったため、発生日を条件に一覧取得して、その中から該当するものを探す必要がありました。

3: まとめ

Deals(取引)はデータ構造が複雑ですので、それをどう準備すべきか検討する必要がありますが、どのデータをどう処理したいのかが明確であれば、比較的容易に会計システムへの自動入力/更新が実現できると考えられます。

もし、ご質問等がありましたら、お問い合わせフォーム からお気軽にご連絡ください。

%d人のブロガーが「いいね」をつけました。