Google Apps Script调用Address Validation API报错求助
问题排查与解决方案
核心错误原因
- UrlFetchApp 参数误用:你用了
body参数传递请求体,但Google Apps Script的UrlFetchApp.fetch()方法并不支持body这个选项,请求体根本没被发送到API,所以返回"Address is missing from request."。 - 请求体结构不符合API要求:你的
addressLines是单个字符串,但Google Address Validation API要求这个字段是字符串数组;同时,Content-Type的设置方式不正确,应该作为options的contentType属性(而非直接作为顶级键)。
修正后的完整代码
function validateAddress () { const url = 'https://addressvalidation.googleapis.com/v1:validateAddress?key='; const apikey = '...'; // 替换为你的有效API密钥 // 修正addressLines为数组,匹配API的参数要求 const requestBody = { "address": { "addressLines": ["1600 Amphitheatre Pkwy"] } }; const options = { muteHttpExceptions: true, method: 'POST', contentType: 'application/json', // 正确设置请求内容类型 payload: JSON.stringify(requestBody) }; const response = UrlFetchApp.fetch(url + apikey, options); Logger.log(response.getContentText()); }
额外优化方案
你也可以直接传入JavaScript对象作为payload,UrlFetchApp会自动帮你序列化为JSON字符串(前提是设置了contentType: 'application/json'),代码更简洁:
const options = { muteHttpExceptions: true, method: 'POST', contentType: 'application/json', payload: requestBody // 直接传对象,无需手动JSON.stringify };
验证要点
- 确认API密钥拥有Address Validation API的调用权限,且额度充足。
- 检查请求体中的其他字段(如需要补充regionCode等)是否符合API文档要求,避免其他结构错误。
内容的提问来源于stack exchange,提问作者sangnandar
相关产品推荐
相关产品推荐

