Как стать автором
Обновить

Скрипты в Google spreadsheets

Время на прочтение4 мин
Количество просмотров39K
image

Не так давно стал доступен сервис скриптов в таблицах Google для персональных аккаунтов (gmail).
googledocs.blogspot.com/2010/03/apps-script-gallery-for-google.html
Краткое описание
www.google.com/google-d-s/scripts/scripts.html
Кроме этого, непосредственно из таблиц стал доступен сервис публикации скриптов в галерею.

Теперь мы можем создавать скрипты для Google Spreadsheets, загружать готовые, публиковать, обмениваться с другими пользователями.
Скрипты имеют богатый набор возможностей. Мы можем использовать всё управление, доступное в сервисах Google.
www.google.com/google-d-s/scripts/overview.html

Результатом работы скрипта, например, могут быть:
  • новая функция, отсутствующая в стандартном наборе;
  • значение, возвращаемое веб сервисом, в том числе, SOAP, WSDL и другие;
  • управление другими сервисами, например, сайтом, календарем, почтовой рассылкой;
  • автоматическое заполнение таблиц (непосредственное управление нашими spreadsheets);
  • создание пользовательских интерфейсов (custom spreadsheets UI).

Примеры созданных скриптов для применения в неогеографии

Расчет расстояния между точками по  большой дуге
Copy Source | Copy HTML
  1. function GCD1(lat1, lon1, lat2, lon2) {
  2. // Return Great Circle Distance between points calculation
  3.   function radians(a) {
  4.     var outNum =Math.PI*a/180;
  5.     return outNum;
  6.   }
  7.  
  8.   var R = 6372.795;
  9.   var d1=Math.sin(radians(lat1))*Math.sin(radians(lat2))+Math.cos(radians(lat1))*Math.cos(radians(lat2))*Math.cos(radians(lon2)-radians(lon1));
  10.   var d2=Math.cos(radians(lat2))*Math.sin(radians(lon2)-radians(lon1));
  11.   var d3=Math.cos(radians(lat1))*Math.sin(radians(lat2))-Math.sin(radians(lat1))*Math.cos(radians(lat2))*Math.cos(radians(lon2)-radians(lon1));
  12.   var len=R*Math.atan2(Math.sqrt(d2*d2+d3*d3),d1);
  13.   return len;
  14. }​


Прямое геокодирование
Вернуть KML по названию места
Copy Source | Copy HTML
  1. function getKML(placeName) {
  2. // Return KML by placename
  3.   if (placeName == "") {
  4.     return "You have to write the name the place"
  5.   }
  6.   var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=kml";
  7.   var response = UrlFetchApp.fetch(url);
  8.   var str = response.getContentText();
  9.   return str;
  10. }
 Вернуть координаты по названию места 
  1. function getLngLat(placeName) {
  2. // Return LngLatitude by placename
  3.   if (placeName == "") {
  4.     return "You have to write the name the place"
  5.   }
  6.   var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=json";
  7.   var response = UrlFetchApp.fetch(url);
  8.   var str=eval('(' + response.getContentText() + ')').Placemark[ 0].Point.coordinates;
  9.   return str;
  10. }
 Вернуть долготу по названию места
  1. function getLng(placeName) {
  2. // Return Longitude by placename
  3.   if (placeName == "") {
  4.     return "You have to write the name the place"
  5.   }
  6.   var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=json";
  7.   var response = UrlFetchApp.fetch(url);
  8.   var str=eval('(' + response.getContentText() + ')').Placemark[ 0].Point.coordinates[ 0];
  9.   return str;
  10. }
  11.  
 Вернуть широту по названию места
  1. function getLat(placeName) {
  2. // Return Latitude by placename
  3.   if (placeName == "") {
  4.     return "You have to write the name the place"
  5.   }
  6.   var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=json";
  7.   var response = UrlFetchApp.fetch(url);
  8.   var str=eval('(' + response.getContentText() + ')').Placemark[ 0].Point.coordinates[1];
  9.   return str;
  10. }
  11.  


Обратное геокодирование
Вернуть адрес по координатам
  1. function getAddress(placeCoord) {
  2. // Return Address by placeCoord (reverse geocoding) placeCoord=lat,lng
  3.   if (placeCoord == "") {
  4.     return "You have to write the name the place"
  5.   }
  6.   var url = "http://maps.google.com/maps/geo?q="+ placeCoord+"&output=json";
  7.   var response = UrlFetchApp.fetch(url);
  8.   var str=eval('(' + response.getContentText() + ')').Placemark[ 0].address;
  9.   return str;
  10. }


Пример таблицы расчетов с применением этих скриптов
news.eastgeology.com/2010/04/google-spreadsheets.html
Теги:
Хабы:
+44
Комментарии11

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн