You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Google Maps API Key以导入地图搜索数据至Google文档?

获取Google Maps API密钥并运行你的Google Apps Script代码

一、获取Google Maps API密钥的步骤

  • 登录Google云平台控制台
  • 点击「新建项目」,输入项目名称后完成创建
  • 在控制台顶部搜索框输入「Places API」,找到对应的服务后点击「启用」
  • 进入「API和服务」→「凭据」页面
  • 点击「创建凭据」→「API密钥」,系统会生成一串密钥,复制这串密钥
  • (重要)为避免不必要的费用和密钥被盗用,建议给密钥设置使用限制:比如限制仅允许Google Apps Script调用,或仅允许Places API使用

二、修改并优化你的代码

原代码存在一个问题:搜索关键词如果包含空格、特殊字符,会导致URL请求失败,需要对搜索词做URL编码。另外增加基础错误处理,避免脚本崩溃。

原代码

function getPhoneNumbers() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  
  for (var i = 0; i < data.length; i++) {
    var searchQuery = data[i][0];
    var url = "https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=" + searchQuery + "&inputtype=textquery&fields=formatted_phone_number&key=YOUR_API_KEY_HERE";
    var response = UrlFetchApp.fetch(url);
    var json = response.getContentText();
    var dataObject = JSON.parse(json);
    
    if (dataObject.candidates.length > 0) {
      var phoneNumber = dataObject.candidates[0].formatted_phone_number;
      sheet.getRange(i+1, 2).setValue(phoneNumber);
    }
  }
}

优化后的代码(替换密钥后即可使用)

function getPhoneNumbers() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  // 替换成你刚获取的API密钥
  const API_KEY = "你的API密钥";

  for (var i = 0; i < data.length; i++) {
    var searchQuery = data[i][0];
    // 对搜索词做URL编码,处理特殊字符
    var encodedQuery = encodeURIComponent(searchQuery);
    var url = `https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=${encodedQuery}&inputtype=textquery&fields=formatted_phone_number,name,formatted_address&key=${API_KEY}`;
    
    try {
      var response = UrlFetchApp.fetch(url);
      var json = response.getContentText();
      var dataObject = JSON.parse(json);
      
      if (dataObject.candidates.length > 0) {
        var candidate = dataObject.candidates[0];
        // 写入电话号码、名称、地址(根据需求调整列位置)
        sheet.getRange(i+1, 2).setValue(candidate.formatted_phone_number || "无电话号码");
        sheet.getRange(i+1, 3).setValue(candidate.name || "无名称");
        sheet.getRange(i+1, 4).setValue(candidate.formatted_address || "无地址");
      } else {
        sheet.getRange(i+1, 2).setValue("未找到匹配结果");
      }
    } catch (e) {
      sheet.getRange(i+1, 2).setValue("请求出错:" + e.message);
    }
  }
}

补充说明

  • 需确保Google云平台账户已绑定支付方式(即使免费额度也需要绑定),Places API有免费调用额度,超出后按标准计费
  • 如果需要获取更多字段,可修改fields参数,比如fields=formatted_phone_number,name,formatted_address

内容的提问来源于stack exchange,提问作者Jake Cody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:35:19