会計ソフトにAPIで取引登録をしてみた
今年も確定申告が終わりました!会計処理ってほんと専門外からすると苦痛でしかないですよね。。。少しでも楽に、そして楽しくこなす要素を増やそうと毎年少しずつ自動化ツールをつくって遊びながら簡素化を目指しています。
自分専用の趣味みたいなものなので誰に見せるでも自慢するでもないので、せめて記事のネタにさせてくださいw 今日はそんな趣味のお話。
去年やったこと
話はすこし遡ります。領収書の電子化の一環としてスマホで撮った領収書の写真や受領したPDFファイルをGDriveにアップロードして管理しています。そこで電子帳簿保存の要件を満たすために「アップロードツール」を去年から自作して使っています。
さて、このツールを使って領収書の撮影ファイルやPDFをアップロードすると、要件を満たすようファイル命名ルールを適用したり(ファイル名から必要な検索が代替できればいいのでこれだけでもたぶん要件は満たせる)、写真の解像度が高すぎるときは適正サイズに画像をリサイズしたり、保存先のURLを紐づけて、簡単な条件判断ですが仕訳までしてくれます。最終的にこんな感じのリストがスプレッドシート上に自動的に生成されます。
このリストをCSVに出力して会計ソフト(FREEE)に一括で読み込ませればそのまま取引データになります。会計ソフトに1件1件データを改めて打ち込まなくってもよいので、これはこれで便利。去年はここまで作って便利に使ってました。
今年やったこと
ですが、このCSVの取り込み作業が意外とおっくう。。。そこで、今年はこのスプレッドシートのデータを会計ソフトに「直接」取り込めるようにしてみました。それによって会計ソフトに取引レコードを登録する手間もなくなります。
FREEEにはAPIといったものが用意されています。APIっていうのはシステム間連携で使えるシステムプログラム専用の裏口みたいなものです。スプレッドシートやその他のプログラムから会計ソフト内のデータに直接アクセスできます。CSVなどのファイル処理を手動で行わなくても、APIを使うことでデータの抽出や登録をプログラミングから直接制御できるのです。
FREEEの開発者コミュニティーにはサンプルコードだけでなく動画のチュートリアルまで充実しているので、あるていど知見があれば迷いなく実装できるのじゃないかと思います。
こういったAPIを利用して、スプレットシード上で管理している領収書の支払いデータを手動作業を介さずに直接一括登録できるようにします。
取引の取り込み
取引(支出)レコードを登録するAPIはこれ。このAPIを使って取引登録をします。
サンプルコードを引っ張ってくるとこんな感じになると思います。取引情報を1件登録するサンプル。
const freeeApp = getService();
const accessToken = freeeApp.getAccessToken();
const requestUrl = "https://api.freee.co.jp/api/1/deals";
const headers = { "Authorization" : "Bearer " + accessToken };
let details = [];
details.push({
"account_item_id": {勘定科目ID},
"tax_code": {税区分CD},
"tag_ids": [{タグID},...],
"amount": {金額},
"description": {備考}
});
let payments = [];
payments.push({
"date": {取引日},
"from_walletable_type": {口座区分},
"from_walletable_id": {口座ID},
"amount": {金額}
});
const requestBody = {
"company_id": {事業者ID},
"issue_date": {取引日},
"type": {収支区分},
"ref_number": "",
"details": details,
"payments": payments
};
const options = {
"method" : "POST",
"contentType" : "application/json",
"headers" : headers,
"payload" : JSON.stringify( requestBody ),
muteHttpExceptions : true
};
//データをFREEEに送信
const res = UrlFetchApp.fetch( requestUrl , options );
ちょっと横道それますが、FREEEのAPIを使うとき、上記の各{項目}にはそれぞれ内部的に採番されたID/コードで指定する必要があります。例えば、勘定科目の「消耗品費」は、331056809というIDで指定する必要があります。このIDは管理画面などからサクッと参照できないし、各ユーザ毎に異なる(デフォルトで設定されている項目のIDはたぶん同じだと思いますが、、、)ようなのでいちいちAPIを介して個別の環境で内部IDを拾ってこないといけない。。。結果的に全ての必要項目に対してIDを参照する機能を実装しなくちゃだと思います。いっそ管理画面のマスタ一覧にでも小さく併記してくれればいいのにね。
そんなこんなでできました!
これで、アップロードした領収書情報をボタンひとつでFREEEに自動連携できるようになりました!あんまり趣味でAPIたたく人いないかもしれませんが、、、これで領収書の処理も楽になるので一石二鳥です。
来年は何をつくろうか。残っているのはOCR機能か!?
参考
この記事が気に入ったらサポートをしてみませんか?