Importjson到google电子表格,一个字段给出了几个结果

时间:2017-11-13 16:09:06

标签: google-apps-script google-sheets google-sheets-formula importjson

我正在为@ post工作制作一个跟踪系统,到目前为止我觉得我完成了90%,但是我遇到了一个问题。

我已将此脚本添加到Google电子表格中: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中有几个“状态”,这就是它获取所有结果的原因。我想要的是在谷歌电子表格中获取状态的最后结果。这使它看起来更干净,并且使用较少的细胞也没有用。提供的网址是一个测试包,但是当我们发送时,它会获得更多“状态”,最多可以达到5种状态。

TLDR:想要获得一个状态结果,而不是几个 - >>将数据导入Google电子表格时https://tracking.bring.com/api/tracking.json?q=TESTPACKAGE-AT-PICKUPPOINT

1 个答案:

答案 0 :(得分:0)

您需要修改最终输出数组。为此,添加/修改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;
}