如何在一定范围内递归此公式?

时间:2019-08-07 16:27:29

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

我正在建立一个电子表格,当给定一个字符串时,该电子表格会从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语句的开头。

0 个答案:

没有答案
相关问题