You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets中IMPORTJSON提取Geocoding指定地址组件求助

解决Google Sheets中提取地理编码API特定地址组件的问题

问题核心

你用IMPORTJSON调用谷歌地理编码API时没法直接筛选出类型为locality,political的地址组件,本质原因是IMPORTJSON的默认路径语法只支持按JSON层级提取数据,不支持条件过滤,所以会返回所有address_components内容,分散在多行多列。

解决方案一:自定义Google Apps Script函数(推荐)

直接在API请求后做数据筛选,精准返回你需要的城市名称,步骤如下:

  1. 打开你的Google Sheets,点击顶部菜单栏「扩展程序」→「Apps Script」
  2. 删除编辑器里的默认代码,粘贴以下代码:
function GET_CITY(lat, lng, apiKey) {
  var requestUrl = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=${apiKey}`;
  var apiResponse = UrlFetchApp.fetch(requestUrl);
  var parsedData = JSON.parse(apiResponse.getContentText());

  // 遍历地址组件,筛选符合locality,political的项
  for (let result of parsedData.results) {
    for (let component of result.address_components) {
      if (component.types.includes("locality") && component.types.includes("political")) {
        return component.long_name; // 需要短名称的话,替换为component.short_name
      }
    }
  }
  return "未匹配到城市";
}
  1. 点击编辑器顶部的保存按钮,给项目起个名字(比如CityExtractor),关闭Apps Script页面
  2. 回到表格,在D2单元格输入公式:
=GET_CITY(B2,C2,"你的真实API密钥")
  1. 下拉单元格填充整列,即可批量获取对应坐标的城市名称

解决方案二:原生函数组合(无脚本)

如果不想用自定义脚本,可以用FILTER+REGEXMATCH+INDEX组合处理IMPORTJSON的返回结果:

  1. 先在D2单元格保留原IMPORTJSON公式(路径设为/results/address_components),让它返回所有地址组件
  2. 假设返回的types列在F列(具体列位根据你的实际返回结果调整),在目标单元格输入:
=INDEX(FILTER(D:D, REGEXMATCH(F:F, "locality.*political")),1)

这种方法的缺点是IMPORTJSON返回的列位置可能随API响应变化,稳定性不如自定义函数。


内容的提问来源于stack exchange,提问作者Jonathan Fraser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:45:13