Json импорт в googlesheet - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь импортировать данные из Json, но не знаю синтаксиса для этого:

Json код:

"line_items": [
      {
        "id": 2457,
        "name": "GRAND PARC",
        "product_id": 4815,
        "variation_id": 0,
        "quantity": 1,
        "tax_class": "",
        "subtotal": "12.00",
        "subtotal_tax": "0.00",
        "total": "12.00",
        "total_tax": "0.00",
        "taxes": [],
        "meta_data": [
          {
            "id": 28148,
            "key": "bookacti_booking_id",
            "value": "3990"
          },
          {
            "id": 28149,
            "key": "bookacti_booked_events",
            "value": "[{\"id\":\"3990\",\"event_id\":\"2292\",\"event_start\":\"2020-07-22 14:15:00\",\"event_end\":\"2020-07-22 15:15:00\",\"title\":\"GRAND PARC\",\"activity_id\":\"5\",\"template_id\":\"9\"}]"
          },

Вот сценарий I используйте:

//this is a function that fires when the webapp receives a GET request
function doGet(e) {
  return HtmlService.createHtmlOutput("request received");
}

//this is a function that fires when the webapp receives a POST request
function doPost(e) {
  var myData = JSON.parse([e.postData.contents]);
  var order_number = myData.number;
  var product_name = myData.line_items[0].name;
        
  var timestamp = new Date();
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow([timestamp,order_number,name]);
}

это работает отлично, но я не знаю синтаксиса для импорта этого: "event_start \ in: body.line_items [0] .meta_data [1] .value

Может быть что-то вроде: var event_begins = myData.line_items [0] .meta_data [1] .value.event_start; но это не работает ...

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Я считаю, что ваша цель следующая.

  • Вы хотите получить значение event_start в myData.line_items[0].meta_data[1].value.

Точки модификации:

  • В этом ответе предполагается, что myData - это следующий объект.

      var myData = {"line_items":[{"id":2457,"name":"GRANDPARC","product_id":4815,"variation_id":0,"quantity":1,"tax_class":"","subtotal":"12.00","subtotal_tax":"0.00","total":"12.00","total_tax":"0.00","taxes":[],"meta_data":[{"id":28148,"key":"bookacti_booking_id","value":"3990"},{"id":28149,"key":"bookacti_booked_events","value":"[{\"id\":\"3990\",\"event_id\":\"2292\",\"event_start\":\"2020-07-2214:15:00\",\"event_end\":\"2020-07-2215:15:00\",\"title\":\"GRANDPARC\",\"activity_id\":\"5\",\"template_id\":\"9\"}]"}]}]}
    
  • Из вышеуказанного объекта выясняется, что значение myData.line_items[0].meta_data[1].value равно строка. Итак, в этом случае, пожалуйста, проанализируйте значение как объект, например var obj = JSON.parse(myData.line_items[0].meta_data[1].value);. При этом извлекается следующий объект:

      [
        {
          "id": "3990",
          "event_id": "2292",
          "event_start": "2020-07-22 14:15:00",
          "event_end": "2020-07-22 15:15:00",
          "title": "GRAND PARC",
          "activity_id": "5",
          "template_id": "9"
        }
      ]
    
  • Извлеченный выше объект, если вы хотите получить значение event_start, вы можете получить его с помощью var event_begins = obj[0].event_start;.

Когда указанные выше точки отражаются в образце сценария, он становится следующим.

Пример сценария:

var myData = {
  "line_items": [
    {
      "id": 2457,
      "name": "GRAND PARC",
      "product_id": 4815,
      "variation_id": 0,
      "quantity": 1,
      "tax_class": "",
      "subtotal": "12.00",
      "subtotal_tax": "0.00",
      "total": "12.00",
      "total_tax": "0.00",
      "taxes": [],
      "meta_data": [
        {
          "id": 28148,
          "key": "bookacti_booking_id",
          "value": "3990"
        },
        {
          "id": 28149,
          "key": "bookacti_booked_events",
          "value": "[{\"id\":\"3990\",\"event_id\":\"2292\",\"event_start\":\"2020-07-22 14:15:00\",\"event_end\":\"2020-07-22 15:15:00\",\"title\":\"GRAND PARC\",\"activity_id\":\"5\",\"template_id\":\"9\"}]"
        }
      ]
    }
  ]
};
var obj = JSON.parse(myData.line_items[0].meta_data[1].value);
var event_begins = obj[0].event_start;
console.log(event_begins)  // 2020-07-22 14:15:00

Ссылка:

0 голосов
/ 13 июля 2020

Полагаю, для event_end это будет:

var obj = JSON.parse(myData.line_items[0].meta_data[1].value);
var event_begins = obj[0].event_start;
var event_ends = obj[0].event_end; 

?

С уважением

...