App Script调用DVLA车辆查询API:UrlFetchApp替代方案咨询
如何在App Script中调用英国车辆查询服务(VES)API
先排查UrlFetchApp的调用问题
绝大多数情况不是UrlFetchApp不支持,而是请求配置不符合VES API的强制要求。VES API明确要求:
- 使用POST请求方法
- 请求头必须携带
x-api-key(你的API密钥) - 请求体为JSON格式,包含
registrationNumber字段
正确的UrlFetchApp调用示例
function fetchVehicleDetails() { const apiKey = "YOUR_VES_API_KEY"; // 替换为你的API密钥 const regNumber = "AB12CDE"; // 替换为目标车牌号码(无空格、大写) const apiUrl = "https://driver-vehicle-licensing.api.gov.uk/vehicle-enquiry/v1/vehicles"; const requestOptions = { method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey }, payload: JSON.stringify({ registrationNumber: regNumber }), muteHttpExceptions: true // 开启后可查看错误详情,方便调试 }; const response = UrlFetchApp.fetch(apiUrl, requestOptions); const statusCode = response.getResponseCode(); const responseText = response.getContentText(); if (statusCode === 200) { const vehicleData = JSON.parse(responseText); console.log("车辆信息:", vehicleData); // 可在此处处理返回数据,例如写入Google Sheet } else { console.error(`请求失败,状态码: ${statusCode},响应: ${responseText}`); // 根据错误码排查:401=密钥无效,400=请求格式错误,403=权限未开通 } }
如果UrlFetchApp仍无法工作的替代方案
1. 强制指定TLS版本
VES API要求TLS 1.2及以上,UrlFetchApp默认支持,但可显式指定确保兼容:
在requestOptions中添加:
tlsVersion: UrlFetchApp.TLS_VERSION_1_2
2. 集成OAuth2库(适用于OAuth认证场景)
若你的API访问需要OAuth2流程(部分高级权限场景),可使用App Script的OAuth2库:
- 打开App Script编辑器,点击「资源」→「库」,输入库ID
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF添加OAuth2库 - 按照VES API的OAuth文档配置客户端ID、密钥,获取访问令牌后,在请求头中携带
Authorization: Bearer {token}
关键排查点
- 确认API密钥已在VES开发者门户激活,且权限包含车辆查询服务
- 车牌号码格式正确:无空格、大写字母(如
AB12CDE而非AB 12 CDE) - 通过
muteHttpExceptions获取的错误响应,对照官方文档的错误码定位问题
内容的提问来源于stack exchange,提问作者Simon Birchall
相关产品推荐
相关产品推荐

