Community

コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。

  • 投稿

    アバター新米

    ファイルボックスへの証憑アップロードに関するエラーメッセージ2

    ファイルボックスへの証憑アップロードに関するエラーメッセージ
    先日の質問にお答えいただきありがとうございました。

    教えていただいた通り、

    >{
    >“company_id”: ,1234567
    >“receipts”:DriveApp.getFileById(“xxxxxxxxxxxxxxxxxxxxxxxx”).getBlob()
    >}

    こちらの部分につきまして、パラメータに誤りがあるようです。
    ☓ receipts
    ○ receipt

    と修正したのですが、やはり同じく

    {“status_code”:400,”errors”:[{“type”:”validation”,”messages”:[“”]}]}と帰ってきます。

    形式がおかしいのでしょうか?

    何度も申し訳ございませんが、お返事お待ちしております。

     

    先日の質問内容 :

    他のapiのpostはできるのですが、ファイルボックスに証憑アップロードする場合のみ失敗します。

    putで画像情報の更新は確認できるのですが、postを以下のGASコードで実行しようとすると、

    {“status_code”:400,”errors”:[{“type”:”validation”,”messages”:[“”]}]}というエラーを吐きます。

    messageが無く、途方に暮れております。画像はjpegの領収書です。

    function attempt() {
    var requiredData =
    {
    “company_id”: ,1234567
    “receipt”:DriveApp.getFileById(“xxxxxxxxxxxxxxxxxxxxxxxx”).getBlob()
    }

    var freeeApp = getService();
    var accessToken = freeeApp.getAccessToken();
    var headers = {“Authorization” : “Bearer ” + accessToken };
    var options = {
    “contentType”:”application/json”,
    “method” : “POST”,
    “headers” : headers,
    “payload” : JSON.stringify(requiredData),
    “muteHttpExceptions”: true
    };

    var requestUrl = “https://api.freee.co.jp/api/1/receipts”

    var res = UrlFetchApp.fetch( requestUrl , options );

    }

     

    私のコードに問題があるようなのですが、エラーの理由を教えていただけますでしょうか。

    お手数をおかけしますが、お返事お待ちしております。

    回答

    freee dev-supportfreee dev-support

    ご質問ありがとうございます。

    エラーメッセージが空になってしまう件に関しましては、
    開発チームにフィードバッグを行いました。
    ご指摘ありがとうございます。

    具体的な対応ですが google apps script, javascript の実装に関わる内容のため、
    動作等の保証は出来かねますご了承ください。
    以下参考情報として詳細な原因等はお調べ願います。

    今回のケースの場合。

    1. contentType は application/json ではなく、 multipart/data-form なので削除ください。
    2. requiredData を JSON.stringify しない
    3. company_id を JSON.stringify する
    ex)
    var requiredData = {
    “company_id”: JSON.stringify(12344567),
    “receipt”: …
    }

    事で解消されるのではと存じます。

    ※ 詳細な原因は
    var request = UrlFetchApp.getRequest(url, params);
    Logger.log(request);
    等でリクエストの中身を見つつ。
    multipart/data-form のリクエストに関してお調べ頂くことで解決に到れるかと存じます。

    ご確認よろしくお願いいたします。

    アバター新米

    ご指摘の通り修正後、実行確認できました。

    初歩的な質問にもかかわらず、迅速かつ丁寧な対応で非常に助かりました。

    ありがとうございました。

     

    freee dev-supportfreee dev-support

    ご確認ありがとうございます。
    引き続きどうぞよろしくお願いいたします。