2017-07-14 15 views
0

私はGoogleスクリプトのウェブフックからJSONレスポンスを収集し、その結果をGoogleシートに出力しようとしています。JSONを解析する - Google Apps Script

理想的には私はここ

(たびにウェブフックは、このデータをスプレッドシートに次の行に入力されて焼成される)、スプレッドシートの列に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} 

は、単純に次の行

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データをダンプする既存のGoogleスクリプトコードであります私は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のプレイリストの中央に向かって見てください。

関連する問題