Ô mã hóa địa lý Google Trang tính

Gần đây, tôi đã phát hiện ra một công cụ mạnh mẽ từ kênh Youtube Google Developers tuyệt vời. Tập lệnh Google Apps. Điều này sẽ cho phép bạn tích hợp Google Apps và API một cách dễ dàng. Trong bài đăng này, tôi sẽ trình bày một ví dụ về tích hợp giữa Google Sheets và Google Geocoding API

Tôi đã thử viết một ví dụ đơn giản nhưng mạnh mẽ, thử nghiệm một trường hợp sử dụng chắc chắn sẽ hữu ích cho tôi trong tương lai. mã hóa địa lý một danh sách các địa chỉ được lấy từ bảng tính

Mục lục

  • 1. Giới thiệu
  • 2. Tích hợp Google Sheets với Google Geocoding API
  • 3. Sự kết luận

1. Giới thiệu

Nếu bạn chưa quen với Google App Script (giống như tôi) ở đây, bạn có thể xem hướng dẫn bằng video giới thiệu

Một hướng dẫn khác giải thích cách tích hợp Google Trang tính với Google Maps và đặc biệt là với Google Geocode API

Tôi đã bắt đầu từ đó và tôi đã tạo một tập lệnh để mã hóa địa lý (nghĩa là chuyển từ địa chỉ có thể đọc được của con người sang tọa độ địa lý của vị trí) một danh sách các địa chỉ được viết trong Google Trang tính

2. Tích hợp Google Sheets với Google Geocoding API

Để kiểm tra tập lệnh, chỉ cần tạo Bảng tính mới trong Google Drive và ghi danh sách địa chỉ vào cột đầu tiên, như thế này

Ô mã hóa địa lý Google Trang tính
Một bảng tính thử nghiệm của Google

Sau đó nhấp vào Tools > Script editor và viết mã này trong trình chỉnh sửa

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();

  var range = sheet.getDataRange();
  var cells = range.getValues();

  var latitudes = [];
  var longitudes = [];

  for (var i = 0; i < cells.length; i++) {
    var address = cells[i][0];
    var geocoder = Maps.newGeocoder().geocode(address);
    var res = geocoder.results[0];

    var lat = lng = 0;
    if (res) {
      lat = res.geometry.location.lat;
      lng = res.geometry.location.lng;
    }

    latitudes.push([lat]);
    longitudes.push([lng]);
  }

  sheet.getRange('B1')
  .offset(0, 0, latitudes.length)
  .setValues(latitudes);
  sheet.getRange('C1')
  .offset(0, 0, longitudes.length)
  .setValues(longitudes);
}

Nhấp vào chạy, lưu tập lệnh có tên, cho phép tập lệnh ghi dữ liệu trên tài liệu của bạn và ta-dah, địa chỉ của bạn sẽ được mã hóa địa lý và tọa độ sẽ xuất hiện trong cột thứ hai và thứ ba

Ô mã hóa địa lý Google Trang tính
Địa chỉ đã được mã hóa địa lý

Bạn cũng có thể lưu dữ liệu khác đến từ Bộ mã hóa địa lý trong trang tính. Ví dụ: ở đây tôi cũng lưu địa chỉ được định dạng hoàn chỉnh do Bộ mã hóa địa lý trả về trong cột thứ tư

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();

  var range = sheet.getDataRange();
  var cells = range.getValues();

  var latitudes = [];
  var longitudes = [];
  var formatted_addresses = [];

  for (var i = 0; i < cells.length; i++) {
    var address = cells[i][0];
    var geocoder = Maps.newGeocoder().geocode(address);
    var res = geocoder.results[0];

    var lat = lng = 0;
    var formatted_address = '';
    if (res) {
      lat = res.geometry.location.lat;
      lng = res.geometry.location.lng;
      formatted_address = res.formatted_address;
    }

    latitudes.push([lat]);
    longitudes.push([lng]);
    formatted_addresses.push([formatted_address]);
  }

  sheet.getRange('B1')
  .offset(0, 0, latitudes.length)
  .setValues(latitudes);
  sheet.getRange('C1')
  .offset(0, 0, longitudes.length)
  .setValues(longitudes);
  sheet.getRange('D1')
  .offset(0, 0, formatted_addresses.length)
  .setValues(formatted_addresses);
}

Vui lòng tham khảo tài liệu để biết dữ liệu nào khác có trong đối tượng được trả về bởi Geocoder

3. Sự kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng API mã hóa địa lý của Google để tự động mã hóa địa chỉ địa chỉ trên tệp Google Trang tính

Google Apps Script có thể làm được nhiều hơn là tích hợp Google Sheets và Google Geocoding API. Trong tài liệu, bạn sẽ tìm thấy tất cả các dịch vụ có thể được sử dụng trong tập lệnh của mình. Bạn có thể tích hợp GMail, Lịch Google, Tài liệu, Drive, Biểu mẫu, v.v. Bạn cũng có thể kết nối với các API công khai bên ngoài từ tập lệnh của mình