如何在Google Sheets中计算两城市距离?GOOGLEMAPS_DISTANCE公式报错
解决Google Sheets中GOOGLEMAPS_DISTANCE的#ERROR!问题
核心问题
GOOGLEMAPS_DISTANCE 不是Google Sheets的内置函数,它是依赖Google Apps Script实现的自定义函数,直接调用会触发报错。另外你单元格里的@符号也可能干扰地址解析逻辑。
正确实现步骤
1. 部署自定义函数
Google Sheets本身没有内置的地图距离计算函数,必须先通过Apps Script添加这个自定义函数:
- 打开你的表格,点击顶部菜单栏的 扩展程序 > Apps脚本
- 清空编辑器里的默认代码,粘贴以下脚本:
function GOOGLEMAPS_DISTANCE(origin, destination, mode) { const dirFinder = Maps.newDirectionFinder(); dirFinder.setOrigin(origin.replace(/@/g, '')); // 自动移除地址中的@符号 dirFinder.setDestination(destination.replace(/@/g, '')); dirFinder.setMode(mode || 'driving'); const directions = dirFinder.getDirections(); if (!directions.routes.length) return "无法找到有效路线"; return directions.routes[0].legs[0].distance.text; }
- 点击编辑器顶部的保存按钮,给项目起个名字(比如“MapDistanceTools”)
- 首次运行会弹出权限请求,按照提示完成授权(需要允许脚本访问Google Maps服务)
2. 重新调用公式
在任意单元格输入:=GOOGLEMAPS_DISTANCE(A1, B1, "driving")
即可得到两地的驾车距离(格式类似“1,430 km”)
常见报错排查
- 未部署脚本:直接调用函数必然报错,先完成上面的脚本部署步骤
- 授权失败:如果脚本没获得Maps访问权限,重新进入Apps Script,手动运行一次函数触发授权流程
- 地址解析失败:确保单元格里的地址是可识别的地名,若有其他特殊符号需手动清理
- API配额限制:Google Maps API有免费调用额度,超出后会返回错误,需检查配额或升级方案
内容的提问来源于stack exchange,提问作者Gabe
相关产品推荐
相关产品推荐

