【问题标题】:Json import in googlesheet谷歌表中的 Json 导入
【发布时间】:2020-07-12 08:31:15
【问题描述】:

我正在尝试从 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\"}]"
          },

这是我使用的脚本:

//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; 但它不起作用......

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的目标。那么为了正确理解它,你能提供你期望的输出吗?
  • 你好,我期望的输出是:2020-07-22 14:15:00 (from even_start)
  • 感谢您的回复。根据您的回复,我提出了一个示例脚本作为答案。你能确认一下吗?如果这不是您期望的结果,我深表歉意。

标签: json google-apps-script google-sheets


【解决方案1】:

我相信你的目标如下。

  • 您想在myData.line_items[0].meta_data[1].value 中检索event_start 的值。

修改点:

  • 此答案假设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

参考:

【讨论】:

  • @guillaume dumond 欢迎。谢谢你让我知道。我很高兴你的问题得到了解决。如果您的问题得到解决,请按接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为您的问题和解决方案将对他们有用。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
  • @guillaumedumond 出于文档目的,如果可以的话,请接受对您有帮助的答案 (✓) - 它可以帮助将来遇到相同问题的其他人也找到解决方案:)跨度>
  • @guillaume dumond 感谢您的回复。
【解决方案2】:

我想对于 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; 

?

最好的问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多