2016-08-02 19 views
2

Есть ли у кого-нибудь рабочий пример создания POST в API QuickBooks с помощью скрипта Google Apps?QuickBooks API POST с использованием скрипта Google Apps

Я пытаюсь создать оценку, используя API QuickBooks, однако, хотя ниже тело запроса работает в API исследователя, изнутри Apps Script я получаю:

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 ожидает булевскую, а не клавишу «Линия».

Это, как я определяю его как полезную нагрузку 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

Вы должны stringify всю полезную нагрузку до передачи его вызова OAuth.fetch().

Так

var payload = JSON.stringify({ 
    "Line": [ 
    { 
     "Id": "3", 
     . 
     . 
})