Freeeのアプリを作成してみる Part 2

2021-06-22
Freee

本日は昨日の続きで、FreeeさんのAPIをつかってレシート・領収書のデータファイルをファイルボックスに保存するアプリを作ってみます。

前回ではアプリの基本となりクレデンシャル部分をカバーしました。本日は実際にデータをアップロードする部分を作ってみます。

前回の投稿はこちらです。

POST /api/1/receipts

利用するAPIメソッドはこちらになります。 https://developer.freee.co.jp/docs/accounting/reference#operations-Receipts-create_receipt

"ファイルボックスのAPI"

/api/1/receipts

に対してファイルをPOSTしていきます。

下記のコードを書いてみました。

 // ここでイメージデータを取得
var image = (from i in _db.Images where i.Tid == originalLog.ImageLocation select i).FirstOrDefault();

// すでに保存されているイメージデータをダウンロードしてByte[]にします
var myWebClient = new WebClient();
byte[] imageArray = myWebClient.DownloadData(image.BlobUrl);

using (var httpClient = new HttpClient())
{
   using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api.freee.co.jp/api/1/receipts"))
   {
      request.Headers.TryAddWithoutValidation("accept", "application/json");
      request.Headers.TryAddWithoutValidation("Authorization", "Bearer {ここにトークン}");
      request.Headers.TryAddWithoutValidation("X-Api-Version", "2020-06-15");
      
      var multipartContent = new MultipartFormDataContent();
      multipartContent.Add(new StringContent("{事業所IDをここに指定}"), "company_id");
      multipartContent.Add(new ByteArrayContent(imageArray), "receipt", originalLog.ImageLocation + ".jpg");
      request.Content = multipartContent;

      var response = await httpClient.SendAsync(request);
   }
}

これで指定の事業所参加にあるファイルボックスにイメージファイルを格納することができます。

ファイルボックスの確認

実際に指定の事業所のファイルボックスを見てみましょう↓。

freeeファイルボックス

意図した動きになっていますね、 次は事業所の選択とトークンのリフレッシュを見てみたいと思います。

Freeeのアプリを作成してみる Part 3へ進む

公開日: 2021-06-21