如何提升路线服务日请求配额避免「每日调用路线服务次数过多」报错
问题根因
你遇到的配额限制来自Google Apps Script 内置 Maps 服务的独立配额规则,和你在GCP控制台设置的Directions API配额完全无关。只要你调用Maps.newDirectionFinder()方法,无论是否绑定GCP账号、是否调整GCP Directions API上限,都必须遵守普通账户每日1000次的调用限额,该限额默认无法自主提升。
可行解决方案
方案1:直接调用GCP Directions API HTTP接口(最推荐)
放弃使用Apps Script内置的Maps服务,改用UrlFetchApp直接请求Directions API的HTTP接口,此时请求走你自己GCP账户的配额,完全不受Apps Script内置服务的1000次限制,你在GCP设置的无上限配额就会生效。
修改后的参考代码如下:
function drivingdistance(start, end) { // 替换为你GCP控制台中已开启Directions API权限的密钥 const GCP_API_KEY = "YOUR_GCP_API_KEY"; const requestUrl = `https://maps.googleapis.com/maps/api/directions/json?origin=${encodeURIComponent(start)}&destination=${encodeURIComponent(end)}&key=${GCP_API_KEY}`; const response = UrlFetchApp.fetch(requestUrl); const result = JSON.parse(response.getContentText()); if (result.status === "OK") { const distance = result.routes[0].legs[0].distance.value; Logger.log(distance); return distance; } else { throw new Error(`路线查询失败,错误码:${result.status}`); } }
使用前请确认GCP控制台中对应密钥已经开启Directions API的调用权限,建议同时给密钥设置IP/应用限制,避免被盗刷产生额外费用。
方案2:优化调用逻辑减少请求量
如果暂时不想调整调用方式,可以通过优化减少实际请求次数:
- 新增缓存逻辑:将已经查询过的起止点对应距离存在表格隐藏页、
CacheService或PropertiesService中,重复查询直接读取缓存无需调用接口 - 合并批量请求:Directions API支持单次请求传入最多25个途径点,你可以将同一批次的多个查询合并为一次请求,可降低80%以上的调用量
方案3:升级Google Workspace企业账户
如果必须使用Apps Script内置Maps服务,升级到Google Workspace企业版后,内置Maps服务的每日调用配额会大幅提升,足以覆盖你每日2000次的调用需求。
内容的提问来源于stack exchange,提问作者Renzo
相关产品推荐
相关产品推荐

