Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 一天内调用服务的次数过多地理代码_Google Apps Script - Fatal编程技术网

Google apps script 一天内调用服务的次数过多地理代码

Google apps script 一天内调用服务的次数过多地理代码,google-apps-script,Google Apps Script,我在使用谷歌地图地理编码功能时收到这个错误消息,我知道当我超过一天2500个请求的自由限制时会发生这种情况。然而,我已经设置了一个计费选项来支付额外请求的费用,但是我仍然会遇到这个错误。当我设置账单时,它要求我创建一个项目,然后将其与我的账单信息关联,我这样做了,然后我得到了一个API密钥来使用 我不知道是否/在哪里我会把这个API键放在我的代码中。这是我的一段代码 var addressColumn = 1; var addressRow; var latColumn = addr

我在使用谷歌地图地理编码功能时收到这个错误消息,我知道当我超过一天2500个请求的自由限制时会发生这种情况。然而,我已经设置了一个计费选项来支付额外请求的费用,但是我仍然会遇到这个错误。当我设置账单时,它要求我创建一个项目,然后将其与我的账单信息关联,我这样做了,然后我得到了一个API密钥来使用

我不知道是否/在哪里我会把这个API键放在我的代码中。这是我的一段代码

 var addressColumn = 1;
  var addressRow;

  var latColumn = addressColumn + 1;
  var lngColumn = addressColumn + 2;

  var geocoder = Maps.newGeocoder().setRegion(getGeocodingRegion());
  var location;

  for (addressRow = 1; addressRow <= cells.getNumRows(); ++addressRow) {
    var address = cells.getCell(addressRow, addressColumn).getValue();

    // Geocode the address and plug the lat, lng pair into the 
    // 2nd and 3rd elements of the current range row.
    location = geocoder.geocode(address);

    // Only change cells if geocoder seems to have gotten a 
    // valid response.
    if (location.status == 'OK') {
      lat = location["results"][0]["geometry"]["location"]["lat"];
      lng = location["results"][0]["geometry"]["location"]["lng"];

      cells.getCell(addressRow, latColumn).setValue(lat);
      cells.getCell(addressRow, lngColumn).setValue(lng);
    }
  }
};
var addressColumn=1;
var地址行;
var latColumn=addressColumn+1;
var lngColumn=addressColumn+2;
var geocoder=Maps.newGeocoder().setRegion(getGeocodingRegion());
var定位;

对于(addressRow=1;addressRow,您必须在工作表上触发此更改,否则此函数会触发太多时间。此外,我还添加了一个计时器,用于缓解二流限制请求

function getLatLng(address) {
        if(address=="")return("");
        var API_KEY = "YOUR API KEY";

        var options = {
            muteHttpExceptions: true,
            contentType: "application/json",
        };


            var serviceUrl = "https://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&key=" + API_KEY;
      try{
            var response = UrlFetchApp.fetch(serviceUrl, options);

            //sleep random between 2 and 1 second for request
            var milliseconds = Math.floor(((Math.random() * 2) + 1) * 1000);  
            Utilities.sleep(milliseconds);

            if (response.getResponseCode() == 200) {
                var location = JSON.parse(response.getContentText());

                if (location["status"] == "OK") {
                    var lat = location["results"][0]["geometry"]["location"]["lat"];
                    var lng = location["results"][0]["geometry"]["location"]["lng"];

                     return([[lat,lng]]);
                }
              else{
                return([["error",location["status"]]]);
              }
            }
      }
      catch(err){
        return([["error",err.message]]);
      }
    };
您可以获得一个api密钥。 您可以在工作表单元格中直接使用此函数,例如:
getLatLng(D2)

您查看了吗?