freee API를 통해 영수증 이미지 데이터 등록

freee API를 통해 거래 데이터를 등록하는 코드는 때때로 보이지만 영수증을 등록하는 코드는별로 보이지 않습니다.

그래서 영수증(이미지 데이터)을 회계 freeee에 등록하는 샘플 코드를 작성해 보았습니다.

환경



Mac OS
Node.js v10.19.0

요청 서식 확인



freee 개발자 사이트 "Developers Community"에서 API에 대한 요청 형식을 확인합니다.
  • 등록 된 무료 앱을 사용하여 액세스 토큰 얻기
  • 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"
    

    사전 준비



    데스크톱에 작업용 디렉토리 만들기
    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
    

    실제 코드


    const fs = require('fs');
    const FormData = require('form-data');
    const axios = require('axios');
    const auth_token ='freee API のアクセストークン';
    const company_id = '事業所ID';
    
    
    const url = `https://api.freee.co.jp/api/1/receipts`; //領収書を登録するエンドポイント
    const imagePath = `./images/receipt_1.jpg`; //画像のパス
    const file = fs.createReadStream(imagePath);
    
    const form = new FormData();
    form.append('receipt', file);
    form.append('company_id', company_id);
    
    const config = {
        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)); 
    

    실행하면 무사히 영수증이 등록되었습니다.



    포인트로서는, 영수증의 이미지를 FormData에 추가할 때에, 요소명을 「reciept」라고 지정하는 곳 근처일까요.

    참고 정보



    htps : // m / n0 비스케 / ms / 1d1cfc330997f93 2
    h tps:// 퀵했다. 소 m/수_데어 th/있어 MS/아 94아 C4 아 4d71928920c5
    htps : // 기주 b. 코 m / 아오 s / 아 오 s # 후 rm

    노비스케씨도 썼습니다만, 브라우저로부터 이미지를 multipart/form-data 로 포스트하는 예는 많지만, 서버측으로부터 포스트하는 예는 적다.

    위의 기사는 매우 도움이되었습니다.

    좋은 웹페이지 즐겨찾기