2016-08-02 21 views
2

を使用して誰もがGoogle Appsのスクリプトを使用してQuickBooksのAPIにPOSTを行うための作業例を持っていますか?QuickBooksのAPI POST Google Appsのスクリプトを

私がリクエストボディは、以下Appsスクリプト内から、APIエクスプローラで動作しますが、しかし、私は取得するには、QuickBooksのAPIを使用して見積もりを作成しようとしています:

Error: Fetch failed, code: 400, message: {"Fault":{"Error":[{"Message":"Request has invalid or unsupported property","Detail":"Property Name:Unrecognized token 'Line': was expecting ('true', 'false' or 'null')\n specified is unsupported or invalid","code":"2010"}],"type":"ValidationFault"},"time":"2016-08-02T09:51:28.917-07:00"} (line 195, file "Tests") 

しかし、私は、なぜ見ることができませんAPIは "Line"キーではなくブール値を要求します。

これは私がコードでPOSTペイロードとしてそれを定義する方法である:

var payload = { 

    "Line": [ 
     { 
     "Id": "3", 
     "LineNum": 1, 
     "Amount": 10, 
     "DetailType": "SalesItemLineDetail", 
     "SalesItemLineDetail": { 
      "ItemRef": { 
      "value": "2", 
      "name": "Hours" 
      }, 
      "UnitPrice": 10, 
      "Qty": 2 
     } 
     }, 
     { 
     "Amount": 10, 
     "DetailType": "SubTotalLineDetail", 
     "SubTotalLineDetail": {} 
     } 
    ],  
    "TxnTaxDetail": { 
     "TotalTax": 0 
    }, 
    "CustomerRef": { 
     "value": "1", 
     "name": "Mr Blobby" 
    }, 
    "CustomerMemo": { 
     "value": "Thank you for your business and have a great day!" 
    }, 
    "TotalAmt": 31.5, 
    "ApplyTaxAfterDiscount": false, 
    "PrintStatus": "NeedToPrint", 
    "EmailStatus": "NotSet", 
    } 

    var companyId = PropertiesService 
    .getUserProperties() 
    .getProperty('QuickBooks.companyId') 

    var url = 'https://quickbooks.api.intuit.com/v3/company/' + companyId + '/estimate' 

    var options = { 
    headers: { 
     'Accept': 'application/json' 
    }, 
    contentType: 'application/json', 
    method: 'post', 
    payload: payload, 
    muteHttpExceptions: true, 
    } 

    var service = OAuth1_.getService(); 

    var response = service.fetch(url, options) 
+0

あなたは私たちにあなたがUrlFetchAppに作られた完全なコールを表示することができますか? –

+0

+ Dimu Designs - フェッチを追加 –

答えて

0

あなたはOAuth.fetch()の呼び出しに渡す前に、全体のペイロードを文字列化する必要があります。

だから

var payload = JSON.stringify({ 
    "Line": [ 
    { 
     "Id": "3", 
     . 
     . 
}) 
関連する問題