计算世界银行指标
创建一个异步自定义函数来计算特定年份的世界银行指标值。
可计算的指标包括:
| 指标代码 | 指标名称 | 
|---|---|
| NY.GDP.MKTP.CD | GDP(现价美元) | 
| SP.POP.TOTL | 总人口数 | 
| EN.ATM.CO2E.KT | CO₂ 排放量(千吨) | 
| EG.FEC.RNEW.ZS | 可再生能源所占百分比 | 
| IT.NET.USER.ZS | 互联网用户所占百分比 - IT.NET.USER.ZS | 
更多信息请参阅世界银行文档。
//自定义函数:
(function () {
  /**
   * 计算世界银行指定年份的指标值
   * @customfunction
   * @param {string} country 国家 ISO-3 代码,如"TUR"
   * @param {string} indicator 指标代码,如"SP.POP.TOTL"
   * @param {number} year 四位年份,如 2024
   * @returns {any} 数值或 #N/A.
   *
   * @example =WB("TUR", "SP.POP.TOTL", 2024)
   */
  async function WB(country, indicator, year) {
    // 请求 URL(世界银行允许跨域)
    const url =
      `https://api.worldbank.org/v2/country/${country}/indicator/${indicator}` +
      `?format=json&per_page=20000`;
    try {
      const r = await fetch(url);
      const [meta, data] = await r.json();
      // 查找指定年份的数据行
      const row = data.find((v) => v.date === year.toString());
      if (!row || row.value == null) return "#N/A";
      return row.value; // 返回 Promise 结果
    } catch (e) {
      return "#ERROR";
    }
  }
  // 注册函数使其成为表格公式
  Api.AddCustomFunction(WB);
})();
(function () {
    // 获取当前工作表
    let worksheet = Api.GetActiveSheet();
    // 在 A1 和 B1 单元格插入标签
    worksheet.GetRange("A1").SetValue("Country");
    worksheet.GetRange("B1").SetValue("GDP 2024");
    // 添加 ISO-3 格式的国家代码
    let countries = ["USA", "CHN", "JPN", "DEU", "IND", "GBR", "FRA", "ITA", "CAN"];
    for (let i = 0; i < countries.length; i++) {
      worksheet.GetRange("A" + (i + 2)).SetValue(countries[i]);
    }
    worksheet.FormatAsTable("A1:B10");
    // 插入每个国家的公式
    // 调用上述过程中注册的自定义函数‘WB’
    for (let i = 0; i < countries.length; i++) {
      let country = worksheet.GetRange("A" + (i + 2)).GetValue();
      worksheet.GetRange("B" + (i + 2)).SetValue(`=WB("${country}", "NY.GDP.MKTP.CD", 2024)`);
    }
    // 创建图表
    let chart = worksheet.AddChart("'Sheet1'!$A$1:$B$10", true, "bar", 2, 100 * 36000, 60 * 36000, 0, 0, 10, 0);
    chart.SetTitle("GDP  2024", 13);
})();
使用方法:添加自定义函数,获取当前工作表,获取单元格范围,设置值,获取值,格式化为表格,添加图表,设置标题
结果

