Pythonで会計freeeのAPIから取引先の一覧を取得してみる

Pythonで会計freeeのAPIから取引先の一覧を取得してみる

自社の会計管理にクラウド会計ソフトfreeeを利用しているのですが、
今回は「freee API」を用いてクラウド会計ソフト freee 内の情報をpythonで取得してみたいと思います。

クラウド会計ソフトfreeeとは

クラウド会計ソフトfreee(フリー)は、クラウド会計ソフトシェア No.1 (※)の個人事業主・中小企業のための会計ソフトです。銀行口座やクレジットカードの明細を自動で取り込み、記帳を自動化。簿記の知識がなくても簡単にご利用いただけます。
出典:https://www.freee.co.jp/

freee APIについて

2015 年 2 月 19 日、以前よりベータ版として提供しておりました開発者向け API 「freee API」を正式公開致しました。開発者の方は「freee API」を用いてクラウド会計ソフト freee 内の情報を取得したり、freee へ直接データを登録することにより、既存のプロダクトとクラウド会計ソフト freee をシームレスに連携することが可能です。

必要なもの

  • コマンドラインインターフェイス(Macならターミナル的な)
  • テキストエディタ(筆者はAtom)
  • Python3
  • 当然ながら、Freeeのアカウント

今回の最終的なアウトプット

なんでも良かったのですが、ひとまず取引先の会社名を一行ずつ返す形にしました。
最終的なアウトプット

参考サイト

freeeの公式ドキュメントを参考にしました。

freee API を利用してソフトウェアを開発する

freee api ドキュメント

ざっくりとした流れ

  1. freee APIへアプリケーションを登録する(未登録の場合)
  2. アクセストークンの取得
  3. jsonデータの取得
  4. jsonデータの加工と出力

freee APIへアプリケーションを登録する(未登録の場合)

こちらはブラウザ上での作業となります。

公式ドキュメントの方が説明が上手なので、公式ドキュメントのキャプチャ画像をそのまま載せます。

スクリプト全文

実行環境は、MacOS、Python3.6.1。
リクエスト処理系のライブラリはurllib2出なく、Requests(2.18.1)を利用しています。

Requestsは、ウェブサービスとシームレスに統合されたPythonのHTTP/1.1の処理の全てを受け持ちます。 URLに手動でクエリを入力したり、POSTデータをエンコードしたりする必要はありません。 Keep-aliveやHTTP接続のプーリングは、Requestsに urllib3 が組み込まれているので、100%自動で行われます。

[python title=”main.py”] import requests

### アプリケーション情報(先ほどの作業で取得したApp ID、Secret ID, Authorization Codeを’XXX・・・’の箇所にそれぞれ入力してください。)
CLIENT_ID = ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’
CLIENT_SECRET = ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’
REDIRECT_URI = ‘urn:ietf:wg:oauth:2.0:oob’ # 開発環境だけ使用する場合はこのURIのままでOK
AUTHORIZATION_CODE = ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’

### API URL
# トークン取得用API
AUTHORIZE_API_URL = ‘https://api.freee.co.jp/oauth/token’
# 事業所一覧の取得用API
COMPANY_API_URL = ‘https://api.freee.co.jp/api/1/companies’
# 取引先一覧の取得用API
PARTNER_API_URL = ‘https://api.freee.co.jp/api/1/partners’

# (1)アクセストークンを取得する一番最初の処理
params = {
‘grant_type’ : ‘authorization_code’,
‘client_id’ : CLIENT_ID,
‘client_secret’ : CLIENT_SECRET,
‘code’ : AUTHORIZATION_CODE,
‘redirect_uri’ : REDIRECT_URI
}
headers = {
‘Content-Type’: ‘application/x-www-form-urlencoded’
}
r = requests.post(AUTHORIZE_API_URL, params=params, headers=headers)
data = r.json()
ACCESS_TOKEN = data[‘access_token’]

### jsonデータの取得

# カンパニーIDの取得(他のどの情報を取得するのにもユーザーIDかカンパニーIDが必須らしい)
headers = {
‘Content-Type’: ‘application/json’,
‘Authorization’: ‘Bearer ‘ + ACCESS_TOKEN
}
r = requests.get(COMPANY_API_URL, headers=headers)
data = r.json()
company_id = data[‘companies’][0][‘id’]

# 取引先一覧の取得(上記で取得したcompany_idをパラメータに埋め込むことに注意)
params = {
‘company_id’: company_id,
}
r = requests.get(PARTNER_API_URL, params=params, headers=headers)
data = r.json()

# jsonデータの加工と出力
company_list = data[‘partners’] for item in company_list:
print(item[‘name’])

ファイルの実行


python3 main.py

これでfreee内にすでに登録されている取引先の一覧が出力されます。

次回は取引の一覧を取得したいと思います。