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

Google Sheets自定义函数调用Maps API:未知函数返回空值

解决Google Sheets自定义函数mapAddress的问题

一、先解决“未知函数”提示

  • 确认脚本已保存:在Apps Script编辑器点击左上角保存按钮,给项目命名后关闭编辑器,刷新表格页面,再尝试输入=mapAddress("目标地址")。
  • 核对函数名拼写:表格中输入的函数名必须和脚本里的mapAddress完全一致,注意大小写敏感。

二、修复代码逻辑错误(返回空值的核心原因)

你的代码存在三个关键问题:

  1. API响应结构解析错误:findplacefromtext接口的formatted_address不在顶层对象里,而是嵌套在candidates数组的第一个元素中。
  2. 输入未做URL编码:如果地址包含空格、特殊字符,会导致API请求失效。
  3. 变量未声明:obj和addr未用var/let/const声明,属于全局变量,可能引发意外问题。

修正后的代码:

function mapAddress(input) {
  if (!input) return "请输入地址";
  
  const API_KEY = 'XXXXXXX';
  const encodedInput = encodeURIComponent(input);
  // 指定fields参数才能获取formatted_address
  const url = `https://maps.googleapis.com/maps/api/place/findplacefromtext/json?query=${encodedInput}&key=${API_KEY}&fields=formatted_address`;
  
  try {
    const response = UrlFetchApp.fetch(url);
    const json = JSON.parse(response.getContentText());
    
    if (json.candidates && json.candidates.length > 0) {
      return json.candidates[0].formatted_address;
    } else {
      return "未找到匹配地址";
    }
  } catch (error) {
    return `请求错误:${error.message}`;
  }
}

三、额外检查项

  • 确认API密钥已启用「Places API」,并设置了正确的调用限制(比如允许Sheets Apps Script访问)。
  • 检查Google Cloud控制台的Places API配额,配额不足会导致请求失败。
  • 第一次运行函数时需完成授权:弹出权限请求时,确认授权脚本访问UrlFetchApp及相关API。

内容的提问来源于stack exchange,提问作者Mitch P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:41:29