【问题标题】:Generate Google Map from Addresses in Google Sheet从 Google 表格中的地址生成 Google 地图
【发布时间】:2020-02-23 05:31:21
【问题描述】:

我想创建一个从谷歌表格中提取地址的谷歌地图。我已经知道如何生成单个地址的地图搜索(见下文),但不知道如何让我的地图绘制多个地址。

 function sendMap2() {
 var sheet = SpreadsheetApp.getActive().getSheetByName('Summary');
 var address = sheet.getRange('C15:C17').getValue();
 var mapUrl = "https://www.google.com/maps/search/?api=1&query=";
 var mapQuery = encodeURIComponent(address);
 GmailApp.sendEmail('emailaddress@gmail.com', 'Map', 'Map Link: '+mapUrl+mapQuery );
}

【问题讨论】:

    标签: google-maps google-apps-script google-sheets geocode


    【解决方案1】:

    问题:

    您正在使用getValue,它只会返回您指定范围内的左上角单元格(即C15)。

    解决办法:

    如果要获取范围内的所有地址,则必须改用getValues。这将返回一个二维值数组,我建议您将其转换为一个简单的地址数组。然后,您可以遍历此数组中的每个地址,将每个数组附加到带有concat() 的电子邮件正文。

    可能是这样的:

    function sendMap2() {
      var sheet = SpreadsheetApp.getActive().getSheetByName('Summary');
      var values = sheet.getRange('C15:C17').getValues();
      var addresses = [];  
      for (var i = 0; i < values.length; i++) {
        addresses = addresses.concat(values[i]);
      }
      var body = "";
      for (var j = 0; j < addresses.length; j++) {
        var mapUrl = "https://www.google.com/maps/search/?api=1&query=";
        var mapQuery = encodeURIComponent(addresses[j]);
        body = body.concat('Map Link: ' + mapUrl + mapQuery + '\n');
      }
      GmailApp.sendEmail('your-email', 'Map', body);
    }
    

    更新:

    如果你想在一个 URL 中指向多个地址,你可以改用这个:

      var mapUrl = "https://www.google.com/maps/dir/";
      var body = 'Map Link: ' + mapUrl;
      for (var j = 0; j < addresses.length; j++) {
        var mapQuery = encodeURIComponent(addresses[j]);
        body = body.concat(mapQuery + '/');
      }
      GmailApp.sendEmail('your-email', 'Map', body);
    }
    

    参考:

    【讨论】:

    • 谢谢!这绝对是朝着正确方向迈出的一步!它将多个地址提取到地图中,但它会生成多个地图链接,每个地图有 1 个链接,每个链接有 1 个坐标。是否可以将所有地址映射到单个地图上,而不是生成单独的地图链接?
    • 我认为显示几个不同地址的唯一方法是有一条经过不同点的路线。这就是你想要的吗?
    • @taleesita 我根据您的评论更新了我的答案。让我知道这是否适合您。
    • 谢谢@lamblichus!正如您所指出的,这会将它们全部绘制在一张地图上,并有一条经过它们的路线。理想情况下,地图上不会有路线。我希望将绘制的点保存到谷歌地图列表中。
    • @taleesita 我认为这在地图上目前是不可能的。在地图中拥有不同地址的唯一方法是通过它们的路线,或创建自定义列表,最后一个对应于特定帐户。我认为这是你能得到的最接近的。
    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多