【问题标题】:How to retrieve an address based on name and city of a place in Google Sheets?如何根据 Google 表格中某个地点的名称和城市检索地址?
【发布时间】:2016-08-25 00:53:32
【问题描述】:

我想知道如何在 Google 表格中根据地点的名称和城市检索地址?我已阅读this question 的答案并按照说明进行操作,但该帖子中答案的代码为我生成了以下错误:

TypeError:无法从未定义中读取属性“formatted_address”。 (第 8 行,文件“代码”)

转到上面的链接问题将显示答案中的代码,但这里是简短版本:

在获得 Google Places APIkey 后,在 Google 表格的任意单元格中输入用户定义的公式,如下所示:

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

我没有足够高的分数来发布关于该问题的 cmets,这就是为什么我必须提出一个新问题。是否有实现此目的的 Google 表格模板或插件?

【问题讨论】:

  • 请分享您的代码。
  • 我已经编辑了我的帖子以提供代码。转到引用的帖子将提供更多信息。

标签: google-maps-api-3 google-apps-script google-sheets google-places-api google-sheets-api


【解决方案1】:

您需要在Developers Console 的 Google Apps 脚本项目中启用 Google Places API 网络服务,请按照以下步骤操作:

  1. 脚本编辑器中,点击菜单Resources > Developers Console Project
  2. 点击类似以下名称的链接:YourProjectName - project-id-sveeczngccmxxerwwzx
  3. 在左侧菜单中点击 Library 并在 Google Maps APIs 下搜索选项 Google Places API Web Service
  4. 在页面顶部单击启用并再次运行脚本。

【讨论】:

  • 是的,我按照说明启用了 Google Places API Web 服务,但无法让它为我工作。在删除整个列并从新列开始后,我最终确实让它工作了。可能其中一个单元格的格式有些奇怪。
  • 地点、城市或州的价值可能有问题(可能是一些额外的空格?)。您的代码很好,我认为出现该错误的唯一原因是如果未启用 API,例如,如果您登录 response 而不使用 Logger.log(response) 启用 API,您会收到拒绝 (image) 的请求并且不可避免抛出您提到的error,因为response 变为undefined,并且您无法访问属性formatted_address。但我很高兴它现在可以工作了(:
  • 请记住,您始终可以通过在脚本编辑器中直接运行它来测试您的函数,只需像这样定义函数内部的参数 (image)
猜你喜欢
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2022-01-14
  • 2012-08-15
相关资源
最近更新 更多