Google maps 如何将API密钥添加到Google地理编码脚本

Google maps 如何将API密钥添加到Google地理编码脚本,google-maps,google-apps-script,google-sheets,google-cloud-platform,geocode,Google Maps,Google Apps Script,Google Sheets,Google Cloud Platform,Geocode,我问了一个与这篇文章非常相似的问题: 然而,这篇文章的答案不再有效(使用Maps.setAuthentication(clientId,signingKey)),因为它是用于谷歌地图API高级计划的,新客户不再使用该计划。 请看这里: 基本上,我使用下面的代码在谷歌表单中查找10000个地址列表的邮政编码。代码可以工作,但我遇到了一个“一天内调用的服务太多:地理代码(第7行)”错误。我生成了一个地理编码API密钥和计费帐户,但无法确定将其插入何处。我不是很熟悉谷歌脚本代码 functio

我问了一个与这篇文章非常相似的问题:

然而,这篇文章的答案不再有效(使用Maps.setAuthentication(clientId,signingKey)),因为它是用于谷歌地图API高级计划的,新客户不再使用该计划。 请看这里:

基本上,我使用下面的代码在谷歌表单中查找10000个地址列表的邮政编码。代码可以工作,但我遇到了一个“一天内调用的服务太多:地理代码(第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密钥,必须调用。与当前版本相比,没有太大变化

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];
  }
}


令人惊讶的是,你不能!AppScript库不是为实现这一点而设计的。你必须呆在允许的自由层

要使用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];
  }
}


非常感谢。所以看来不管我做什么,每天的查询量都会限制在300个以内?如果是这样的话,有没有其他方法来实现我的目标(即获取10000多个地址的长列表的邮政编码)?非常感谢您的建议,或者只是被指出了正确的方向……在这一点上,我对如何解决这个问题有点不知所措。我不确定AppScript是否是执行此操作的最佳场所(10k+地址有很多查询!我希望您每天都要这样做,这将非常昂贵!)。云功能或云运行将为此进行更多设计。但要注意暂停时间。我强烈建议您处理1000行的块作为示例。顺便说一句,你将是可伸缩的!非常感谢你!!我会调查的谢谢你!所以看来不管我做什么,每天的查询量都会限制在300个以内?如果是这样的话,有没有其他方法来实现我的目标(即获取10000多个地址的长列表的邮政编码)?非常感谢您的建议,或者只是被指出了正确的方向……在这一点上,我对如何解决这个问题有点不知所措。我不确定AppScript是否是执行此操作的最佳场所(10k+地址有很多查询!我希望您每天都要这样做,这将非常昂贵!)。云功能或云运行将为此进行更多设计。但要注意暂停时间。我强烈建议您处理1000行的块作为示例。顺便说一句,你将是可伸缩的!非常感谢你!!我会调查这些