我正在建立一个电子表格,当给定一个字符串时,该电子表格会从API中提取数据。这需要一个自定义函数来提取和解析API。我想使用公式的一个实例来覆盖整个电子表格,但改编Google示例代码:
function DOUBLE(input) {
if (input.map) { // Test whether input is an array.
return input.map(DOUBLE); // Recurse over array if so.
} else {
return input * 2;
}
}
不返回任何值。
这是我当前的代码。没有相关网站的API密钥来替换我的'PRIVATE'
授权令牌,代码本身将无法工作。
function COASTER(input) {
/**
* Returns coaster stats from name.
*
* @param {name} input The value or range of cells to use.
* @return Coaster statistics.
* @customfunction
*/
if (input.map) { // Test whether input is an array.
return input.map(COASTER); // Recurse over array if so.
} else {
// Call the Captain Coasters API
var response = UrlFetchApp.fetch("https://captaincoaster.com/api/coasters?name=" + input ,{"headers": {'X-Auth-Token': 'PRIVATE' }});
// Parse the JSON reply
var json = response.getContentText();
var data = JSON.parse(json);
var results = data["hydra:member"];
var output = []
results.forEach(function(elem) {
output.push([elem["@type"],elem["materialType"]["name"],elem["length"],elem["speed"],elem["manufacturer"]["name"],elem["seatingType"]["name"],elem["inversionsNumber"],elem["height"],elem["status"]["name"],elem["park"]["name"],elem["score"],elem["rank"]]);
});
return output
}
}
我希望公式COASTER(B2:B3)
产生的值存在,但出现以下错误:TypeError: Cannot read property "map" from undefined. at COASTER(Captain Coaster API:11)
,第11行是if
语句的开头。