我问了一个与这篇文章非常相似的问题:如何将我的密钥添加到这个谷歌应用程序脚本中?
但是,该帖子中的答案不再有效(使用Maps.setAuthentication(clientId,signingKey((,因为它用于Google Maps API高级计划,该计划不再适用于新客户。 请参阅此处: https://developers.google.com/apps-script/reference/maps/maps#setAuthentication(String,String(
基本上,我使用以下代码在Google表格中查找10,000个地址列表的邮政编码。代码有效,但我收到"一天调用的服务次数过多:地理编码(第 7 行("错误。我生成了地理编码 API 密钥和计费帐户,但无法确定将其插入何处。我对谷歌脚本代码不是很熟悉。
function geo2zip(a) {
var response=Maps.newGeocoder()
.reverseGeocode(lat(a),long(a));
return response.results[0].formatted_address.split(',')[2].trim().split(' ')[1];
}
function lat(pointa) {
var response = Maps.newGeocoder()
.geocode(pointa);
return response.results[0].geometry.location.lat
}
function long(pointa) {
var response = Maps.newGeocoder()
.geocode(pointa);
return response.results[0].geometry.location.lng
}
令人惊讶的是,你不能!AppScript 库不是为执行此操作而设计的。您必须保持在允许的免费层中。
要使用 API 密钥,您必须直接调用 API。与当前版本相比没有太大变化
var YOUR_API_KEY=.......
function geo2zip(a) {
var options = {
muteHttpExceptions: true,
contentType: "application/json",
};
var serviceUrl = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat(a) + "," + long(a) + "&key=" + YOUR_API_KEY;
var response = UrlFetchApp.fetch(serviceUrl, options);
if (response.getResponseCode() == 200) {
return response.results[0].formatted_address.split(',')[2].trim().split(' ')[1];
}
}