2017-07-14 208 views
0

我想從Google腳本中的webhook收集JSON響應並將結果輸出到Google工作表。Parse Json - Google Apps腳本

理想我想在電子表格(每個網絡掛接被激發進入下一行這個數據在電子表格中的時間)

下面是示例數據是分析和輸出的JSON數據列,從網絡掛接收集:

{parameter={environment=prod, payload={"TEST":"WARNING: THIS IS A TEST PAYLOAD ONLY. THESE IDs ARE NOT VALID FOR THIS RETAILER","id":"b53744ce-2d21-11e2-8057-080027706aa2","retailer_id":"9a5521c3-2d20-11e2-8057-080027706aa2","customer_code":"JOEB","balance":"0.000","points":0,"note":"<p>This is a <em>really<\/em> nice customer<\/p>","year_to_date":"6750.00000","sex":"M","date_of_birth":"1986-10-12","custom_field_1":"foo","custom_field_2":"bar","custom_field_3":"baz","custom_field_4":"","updated_at":"2012-11-14 17:47:57","created_at":"2012-11-13 12:35:57","contact":{"first_name":"Joe","last_name":"Bloggs","company_name":"Acme Limited","phone":"021 555 55555","mobile":"","fax":"","email":"[email protected]","twitter":"@joebloggs","website":"http:\/\/www.example.com\/","physical_address1":"12 Jimmy Street","physical_address2":"","physical_suburb":"Johnsonville","physical_city":"Jamestown","physical_postcode":"65225","physical_state":"WA","physical_country_id":"AU","postal_address1":"12 Jimmy Street","postal_address2":"","postal_suburb":"Johnsonville","postal_city":"Jamestown","postal_postcode":"65225","postal_state":"WA","postal_country_id":"AU"},"contact_first_name":"Joe","contact_last_name":"Bloggs"}, retailer_id=b8ca3a6d-ea18-11e4-ee41-1ca4a74ff9da, type=customer.update, domain_prefix=123}, contextPath=, contentLength=1859, queryString=null, parameters={environment=[Ljava.lang.Object;@53432cae, payload=[Ljava.lang.Object;@2af01d0d, retailer_id=[Ljava.lang.Object;@4282d52a, type=[Ljava.lang.Object;@5a178fb1, domain_prefix=[Ljava.lang.Object;@107bfe01}, postData=FileUpload} 

這裏是我現有的,單純的JSON數據轉儲到下一行

function doPost(e) { 
    return handleResponse(e); 
    } 

    function handleResponse(e) { 
    var ss =SpreadsheetApp.openById('XYZ'); 
    var lastRow = sheet.getLastRow() + 1; 
    SpreadsheetApp.getActiveSheet().getRange('a' + lastRow).setValue(e); 
    } 

谷歌腳本代碼我嘗試過使用JSON.parse,但似乎無法快速完成。

很多謝謝

回答

0

並非所有的都是JSON格式。你可以檢查它here。下面我分離了我認爲是JSON格式的數據。

{ 
    "TEST": "WARNING: THIS IS A TEST PAYLOAD ONLY. THESE IDs ARE NOT VALID FOR THIS RETAILER", 
    "id": "b53744ce-2d21-11e2-8057-080027706aa2", 
    "retailer_id": "9a5521c3-2d20-11e2-8057-080027706aa2", 
    "customer_code": "JOEB", 
    "balance": "0.000", 
    "points": 0, 
    "note": "<p>This is a <em>really</em> nice customer</p>", 
    "year_to_date": "6750.00000", 
    "sex": "M", 
    "date_of_birth": "1986-10-12", 
    "custom_field_1": "foo", 
    "custom_field_2": "bar", 
    "custom_field_3": "baz", 
    "custom_field_4": "", 
    "updated_at": "2012-11-14 17:47:57", 
    "created_at": "2012-11-13 12:35:57", 
    "contact": { 
    "first_name": "Joe", 
    "last_name": "Bloggs", 
    "company_name": "Acme Limited", 
    "phone": "021 555 55555", 
    "mobile": "", 
    "fax": "", 
    "email": "[email protected]", 
    "twitter": "@joebloggs", 
    "website": "http://www.example.com/", 
    "physical_address1": "12 Jimmy Street", 
    "physical_address2": "", 
    "physical_suburb": "Johnsonville", 
    "physical_city": "Jamestown", 
    "physical_postcode": "65225", 
    "physical_state": "WA", 
    "physical_country_id": "AU", 
    "postal_address1": "12 Jimmy Street", 
    "postal_address2": "", 
    "postal_suburb": "Johnsonville", 
    "postal_city": "Jamestown", 
    "postal_postcode": "65225", 
    "postal_state": "WA", 
    "postal_country_id": "AU" 
    }, 
    "contact_first_name": "Joe", 
    "contact_last_name": "Bloggs" 
} 

我跑這個小腳本只是爲了看看我能否正確地獲取數據。

function messingWithJson() 
{ 
    var html=''; 
    var br='<br />'; 
    var text=myUtilities.loadFile('jsonquestion.json');//This just loads into text from a file 
    var data=JSON.parse(text); 
    html+=br + Utilities.formatString('%s<br/>%s %s<br />%s', data.created_at,data.contact.first_name,data.contact.last_name,data.contact.company_name) 
    html+='<br /><input type="button" value="Close" onClick="google.script.host.close();" />'; 
    var userInterface=HtmlService.createHtmlOutput(html).setWidth(800); 
    SpreadsheetApp.getUi().showModelessDialog(userInterface, 'JSON Question'); 
} 

而這是我的輸出。

2012-11-13 12:35:57 
Joe Bloggs 
Acme Limited 

而且我能夠恢復我想要的東西。如果你想要JSON的一些幫助,你可能想看看這些videos。朝JSON播放列表的中間看。