如何获取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
相关产品推荐
相关产品推荐

