1

我想知道如何根据Google表格中某个地点的名称和城市检索地址?我已阅读答案this question和遵循的指示,而是产生在该职位的答案代码下面的错误对我来说:如何根据Google表格中某个地点的名称和城市检索地址?

TypeError: Cannot read property "formatted_address" from undefined. (line 8, file "Code")

去上面的链接的问题会告诉你在回答的代码,但这里是短版:

获得key谷歌Places API的后,在谷歌表的任何单元格中输入用户定义的公式如下:

=mapAddress(B1, B2, B3) 

在文本编辑器,复制和粘贴:

function mapAddress(place, city, state) { 
    var API_KEY = 'yourapikeyhere'; 
    var url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=' + 
    place + ' ' + city + ' ' + state + '&key=' + API_KEY; 
    var response = UrlFetchApp.fetch(url); 
    var json = response.getContentText(); 
    obj = JSON.parse(json); 
    addr = obj.results[0].formatted_address; 
    return addr; 
} 

我没有足够高的分数上张贴的问题,这就是为什么我要问一个新问题的意见。有没有一个Google表格模板或附件可以实现这个功能?

+0

请分享您的代码。 – Teyam

+0

我编辑了我的帖子以提供代码。去参考文章将提供更多的信息。 – graymoment

回答

0

您需要启用谷歌Places API的Web服务Developers Console您的谷歌Apps脚本项目,请按照下列步骤操作:

  1. 脚本编辑器,单击菜单资源>开发人员控制台项目
  2. 点击名字类似的链接:为yourprojectname - 项目-ID-sveeczngccmxxerwwzx
  3. 在左侧菜单中单击图书馆和下谷歌地图API搜索选项谷歌Places API的Web服务
  4. 点击页面顶部的ENABLE再次运行脚本。
+0

是的,我按照启用Google Places API Web服务的说明进行操作,但无法让我工作。在删除整列并从新列开始后,我最终完成了它的工作。其中一个单元格的格式可能有些奇怪。 – graymoment

+0

也许这个地方,城市或州的价值有问题(也许有些额外的空间?)。你的代码是好的,我认为得到这个错误的唯一原因是,如果没有启用API,例如,如果你没有使用Logger.log(响应)启用API来登录'response',你会得到一个拒绝请求[(image)](http://i.stack.imgur.com/upMin.png)并且不可避免地会抛出你提到的[error](http://i.stack.imgur.com/zZLrl.png),因为'响应'变成'未定义',你不能访问'formatted_address'属性。但是我很高兴它现在可以工作了(: – ocordova

+0

)记住,你可以通过直接在脚本编辑器中直接运行它来测试你的函数,只需在函数中定义参数([image](http://i.stack)。 imgur.com/iVbwr.png)) – ocordova