Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

freee API 経由で領収書の画像データを登録する

$
0
0

freee の API 経由で、取引データの登録を行うコードは時折見かけますが、領収書の登録を行うコードはあまり見かけない。

そこで、領収書(画像データ)を会計freeeに登録するサンプルコードを書いてみました。

環境

Mac OS
Node.js v10.19.0

リクエストの書式を確認

freee の開発者向けサイト 「Developers Community」 からAPIへのリクエストの書式を確認する

  • 登録したfreee アプリを使ってアクセストークンを取得
  • Developers Community にトークンを読み込ませる
  • APIリファレンスからテストコール

登録テストに使う事業所の company_id を確認するエンドポイントは 「companies」
領収書の登録用エンドポイントは「receipts」

領収書を登録するCURLは以下の通り

curl -X POST "https://api.freee.co.jp/api/1/receipts"-H"accept: application/json"-H"Authorization: Bearer アクセストークンの文字列"-H"Content-Type: multipart/form-data"-F"company_id=事業所のID"-F"description="-F"issue_date="-F"receipt=@画像ファイル名;type=image/jpeg"

事前準備

Desktopに作業用のディレクトリを作成

mkdir imagepost
cd imagepost

npm init してパッケージをインストールする。今回使うのは

  • fs
  • form-data
  • axios
npm init
npm install fs --save
npm install form-data --save
npm install axios --save

実際のコード

constfs=require('fs');constFormData=require('form-data');constaxios=require('axios');constauth_token='freee API のアクセストークン';constcompany_id='事業所ID';consturl=`https://api.freee.co.jp/api/1/receipts`;//領収書を登録するエンドポイントconstimagePath=`./images/receipt_1.jpg`;//画像のパスconstfile=fs.createReadStream(imagePath);constform=newFormData();form.append('receipt',file);form.append('company_id',company_id);constconfig={headers:{'accept':'application/json','Authorization':'Bearer '+auth_token,'Content-Type':'multipart/form-data',...form.getHeaders(),}}axios.post(url,form,config).then(res=>console.log(res.data)).catch(err=>console.log(err));

実行すると、無事に領収書が登録されました。

スクリーンショット 2020-05-09 15.53.21.png

ポイントとしては、領収書の画像を FormDataに追加する時に、要素名を「reciept」と指定するところあたりでしょうか。

参考情報

https://qiita.com/n0bisuke/items/1d1cfc330997f93e2ee8
https://qiita.com/kazu_death/items/a94ac4ae4d71928920c5

のびすけさんも書いていましたが、ブラウザから画像を multipart/form-data でポストする例は多いけれど、サーバー側からポストする例は少ない。

上記の記事は大変参考になりました。


Viewing all articles
Browse latest Browse all 8691

Trending Articles