我正在尝试为我们的post@工作制作一个跟踪系统,到目前为止,我觉得我已经完成了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
如果你看到源,它在源中有几个"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。
您需要修改最终的输出数组。为此,在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;
}