【问题标题】:Importjson to google spreadsheet, one field gives several resultsImportjson 到谷歌电子表格,一个字段给出几个结果
【发布时间】:2017-11-13 16:09:05
【问题描述】:

我正在尝试为我们的帖子@工作创建一个跟踪系统,到目前为止,我觉得我已经完成了 90%,但我遇到了一个问题。

我已将此脚本添加到谷歌电子表格:https://gist.github.com/chrislkeller/5719258

现在,我正在尝试用这个“命令”提取数据:

=ImportJSON("https://tracking.bring.com/api/tracking.json?q="&A4;"/consignmentSet/packageSet/eventSet/recipientSignature,/consignmentSet/packageSet/eventSet/status,/consignmentSet/senderReference,/consignmentSet/packageSet/productName";"noInherit,noHeaders")

这行得通,但它给了我关于状态的多个结果:

/consignmentSet/packageSet/eventSet/status

如果你看到源,它在源https://tracking.bring.com/api/tracking.json?q=TESTPACKAGE-AT-PICKUPPOINT 中有几个“状态”,这就是它得到所有结果的原因。我想要的是在我的谷歌电子表格中获得状态的最后结果。这使它看起来更干净,并且也减少了无用的电池。提供的url,是自带的测试包,但是当我们发送出去时,它会得到更多的“STATUS”多达5个不同的状态。

TLDR:在将数据导入谷歌电子表格时,想要获得一个状态结果,而不是如图所示的多个结果--> https://tracking.bring.com/api/tracking.json?q=TESTPACKAGE-AT-PICKUPPOINT。

【问题讨论】:

    标签: json google-apps-script google-sheets google-sheets-formula custom-function


    【解决方案1】:

    您需要修改最终的输出数组。为此,在parseJSONObject_ 函数中添加/修改以下行

    var temp =  data.slice(1);
    var final_data = [[temp[0][0],temp[temp.length-1][1],temp[temp.length-1][2],temp[0][3]]];
    return hasOption_(options, "noHeaders") ? (data.length > 1 ? final_data : new Array()) : data;
    

    整个功能:

    /** 
     * Parses a JSON object and returns a two-dimensional array containing the data of that object.
     */
    function parseJSONObject_(object, query, options, includeFunc, transformFunc) {
      var headers = new Array();
      var data    = new Array();
    
      if (query && !Array.isArray(query) && query.toString().indexOf(",") != -1) {
        query = query.toString().split(",");
      }
    
      if (options) {
        options = options.toString().split(",");
      }
    
      parseData_(headers, data, "", 1, object, query, options, includeFunc);
      parseHeaders_(headers, data);
      transformData_(data, options, transformFunc);
    
      var temp =  data.slice(1);
      var final_data = [[temp[0][0],temp[0][1],temp[0][2],temp[0][3]]]; // Modified the index of the array
      return hasOption_(options, "noHeaders") ? (data.length > 1 ? final_data : new Array()) : data;
    }
    

    【讨论】:

    • @user8933804,我已经修改了代码以获得最新状态
    猜你喜欢
    • 2021-07-05
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多