Вредоносное ПО (malware) - это назойливые или опасные программы,...
В далёких 90-х я начинал осваивать программирование, и первые мои "коммерческие" приложения были написаны на VBA под MS Excel. До сих пор помню как удобно было работать, имея готовый интерфейс, функции для манипуляции данными и адресуемые ячейки... Этот, в принципе, нормальный путь для обучения программированию, сейчас имеет несколько недостатков. Во-первых, нехорошо с первых приложений связывать себя с поприетарной средой разработки и исполнения кода, а во-вторых, кому сейчас нужен Visual basic?. Вот JavaScript и GoogleDoc - другое дело. Да и возможностей, учитывая "web-интерфейсность" среды исполнения и открытые API, существенно больше.
Чтобы помочь тем кто заинтересуется программированием "под ячейки", предлагаю тут простой "урок" по созданию скриптов для Google Spreadsheet.
Создаём скрипт
Надеюсь, у вас уже есть Google аккаунт. Входим в свой Google Drive, создаём новы документ Google Spreadsheet. Выбираем в меню нашего нового документа "Инструменты"->"Редактор скриптов" и получаем окно, где можно собственно приступить к программированию.
Язык написания кода: JavaScript, а модель с которой можно работать включает в себя листы, ячейки, диапазоны и окна ввода-вывода для взаимодействия с пользователем.
Пишем код
Function
myFunction()
{
var
ss =
SpreadsheetApp.getActiveSpreadsheet
()
;
var
sheet =
ss.getSheets
()
[
0
]
;
var
first =
Browser.inputBox
("First value"
)
;
sheet.getRange
("A1"
)
.setValue
("First value:"
)
;
sheet.getRange
("B1"
)
.setValue
(first)
;
var
next =
Browser.inputBox
("Next value"
)
;
sheet.getRange
("A2"
)
.setValue
("Next value:"
)
;
sheet.getRange
("B2"
)
.setValue
(next)
;
var
result =
sheet.getRange
("B1"
)
.getValue
()
+
sheet.getRange
("B2"
)
.getValue
()
;
sheet.getRange
("A3"
)
.setValue
("Result:"
)
;
sheet.getRange
("B3"
)
.setValue
(result)
;
Browser.msgBox
("Summ is: "
+
result)
;
}
Тут всё достаточно просто: Объект SpreadshettApp даёт нам экземпляр документа из которого мы берём первый лист. Объект Browser позволяет нам запрашивать данные у клиента и сообщать ему что-нибудь диалоговыми окнами. Для чтения/записи данных ячеек получаем её из листа методом getRange а затем используем методы getValue/setValue.
Вызываем нашу функцию
Есть несколько способов вызвать наш скрипт из Spreadshett-а. Вариант с вызовом через меню "Инструменты"->"Управление скриптами" мы не рассматриваем как неюзабельный.
Классический вариант - запуск кнопкой, делаем так: вставляем на лист рисунок через "Вставка"->"Рисунок" а затем в меню рисунка (показывается при клике на него правой кнопкой) выбираем "Назначить скрипт". В появившемся поле ввода указываем имя функции.
Также можно добавить свой пункт в меню документа, причём сделать это программно. Добавляем в нашем скрипте сточку:
Ss.addMenu
("Test"
,
[
{
name
:
"Test"
,
functionName:
"myFunction"
}
]
)
;
и получаем.
В далёких 90-х я начинал осваивать программирование, и первые мои "коммерческие" приложения были написаны на VBA под MS Excel. До сих пор помню как удобно было работать, имея готовый интерфейс, функции для манипуляции данными и адресуемые ячейки... Этот, в принципе, нормальный путь для обучения программированию, сейчас имеет несколько недостатков. Во-первых, нехорошо с первых приложений связывать себя с поприетарной средой разработки и исполнения кода, а во-вторых, кому сейчас нужен Visual basic?. Вот JavaScript и GoogleDoc - другое дело. Да и возможностей, учитывая "web-интерфейсность" среды исполнения и открытые API, существенно больше.
Чтобы помочь тем кто заинтересуется программированием "под ячейки", предлагаю тут простой "урок" по созданию скриптов для Google Spreadsheet.
Создаём скрипт
Надеюсь, у вас уже есть Google аккаунт. Входим в свой Google Drive, создаём новы документ Google Spreadsheet. Выбираем в меню нашего нового документа "Инструменты"->"Редактор скриптов" и получаем окно, где можно собственно приступить к программированию.
Язык написания кода: JavaScript, а модель с которой можно работать включает в себя листы, ячейки, диапазоны и окна ввода-вывода для взаимодействия с пользователем.
Пишем код
Function
myFunction()
{
var
ss =
SpreadsheetApp.getActiveSpreadsheet
()
;
var
sheet =
ss.getSheets
()
[
0
]
;
var
first =
Browser.inputBox
("First value"
)
;
sheet.getRange
("A1"
)
.setValue
("First value:"
)
;
sheet.getRange
("B1"
)
.setValue
(first)
;
var
next =
Browser.inputBox
("Next value"
)
;
sheet.getRange
("A2"
)
.setValue
("Next value:"
)
;
sheet.getRange
("B2"
)
.setValue
(next)
;
var
result =
sheet.getRange
("B1"
)
.getValue
()
+
sheet.getRange
("B2"
)
.getValue
()
;
sheet.getRange
("A3"
)
.setValue
("Result:"
)
;
sheet.getRange
("B3"
)
.setValue
(result)
;
Browser.msgBox
("Summ is: "
+
result)
;
}
Тут всё достаточно просто: Объект SpreadshettApp даёт нам экземпляр документа из которого мы берём первый лист. Объект Browser позволяет нам запрашивать данные у клиента и сообщать ему что-нибудь диалоговыми окнами. Для чтения/записи данных ячеек получаем её из листа методом getRange а затем используем методы getValue/setValue.
Вызываем нашу функцию
Есть несколько способов вызвать наш скрипт из Spreadshett-а. Вариант с вызовом через меню "Инструменты"->"Управление скриптами" мы не рассматриваем как неюзабельный.
Классический вариант - запуск кнопкой, делаем так: вставляем на лист рисунок через "Вставка"->"Рисунок" а затем в меню рисунка (показывается при клике на него правой кнопкой) выбираем "Назначить скрипт". В появившемся поле ввода указываем имя функции.
Также можно добавить свой пункт в меню документа, причём сделать это программно. Добавляем в нашем скрипте сточку:
Ss.addMenu
("Test"
,
[
{
name
:
"Test"
,
functionName:
"myFunction"
}
]
)
;
и получаем.
Я немного смущен тем, как новые библиотеки должны быть опубликованы.
Я создаю то, что я считаю очень классной и полезной библиотекой для скриптов Google Apps.
Но я не знаю, где я могу опубликовать это, чтобы другие могли наслаждаться и предоставлять некоторую обратную связь. Я замечаю, что я могу опубликовать свой скрипт в качестве шаблона, но я считаю, что это позволит другим импортировать мой скрипт и редактировать по своему усмотрению, но если есть обновления, им нужно будет снова импортировать мой код.
новая функция библиотеки, с другой стороны, требует, чтобы пользователи узнали о вашем идентификаторе приложения, чтобы импортировать его в свои проекты.
На сегодняшний день единственным местом, где перечислены библиотеки, является « Notable Script Libraries » на сайте разработчиков Google. Но это только для выбранных вручную библиотек из Google.
Поэтому мои вопросы здесь:
Когда следует публиковать мой скрипт в качестве шаблона, а не публиковать его как библиотеку? Они кажутся немного перекрывающимися для меня.
Как другие люди делятся своими библиотеками? Планирует ли Google какой-то каталог?
Доброго времени суток, дорогие читатели, вредины, злодеи, доброжелатели и прочие личности. Сегодня мы про Google Scripts , точнее скрипты в таблицах как таковые.
Я думаю, что очень многие из Вас умеют пользоваться Excel "ем или , а некоторые, может, даже и .
Те, кто пользуется диском Google (Google Drive ), наверное уже использовали Таблицы (Spreadsheets ) и заметили, что по функционалу они немного уступают Экселю, но тем не менее это всё ещё мощный инструмент.
Так вот, в Экселе были макросы (этакие команды, упрощающие и автоматизирующие вычисления) , написанные на небезызвестном языке VBA (Visual Basic for Applications) . В Таблицах Google также есть макросы, которые именуются скриптами и пишутся уже на языке Javascript . С ними мы сегодня и познакомимся.
Я заранее Вас предупреждаю о возможной сложности дальнейшего примера, т.к. он не столько обучающий, сколько.. Мм.. Так сказать, конечный факт, которым Вы можете пользоваться и.. И развивать, если это Вам знакомо.
Соберитесь в комочек мозга.. И приступим:)
Создание таблицы Google Drive / Scripts и наполнение её контентом
Рассмотрим такую простенькую задачку:
У нас есть две колонки, в первой мы пишем названия фруктов, а во второй цвет, который соответствует этому фрукту. И мы хотим, чтобы при вводе цвета в колонке цветов автоматически менялся бы цвет названия фрукта.
Если Вы забыли как вообще пользоваться документами Google , то милости просим почитать соответствующую и уже упомянутую выше . Если Вам это не нужно совсем, то читать наверное и дальше даже нет смысла. Хотя, конечно, кому что:)
Так вот, создаем новую таблицу Google , именуем её, например, "Фрукты ". Ну, как, например.. Учитывая, что пример про фрукты, то.. Ну Вы поняли:)
Теперь добавляем на первый лист наши фрукты и цвета:
Примечание! Для того, чтобы считались фрукты, введите в ячейку А1 формулу:
Хотите знать и уметь, больше и сами?
Мы предлагаем Вам обучение по направлениям: компьютеры, программы, администрирование, сервера, сети, сайтостроение, SEO и другое. Узнайте подробности сейчас!
="фрукт ("&COUNTA(A2:A)&")"
Теперь создадим макрос. Для этого идем в меню "Инструменты " и выбираем "Управление скриптами ". Появится всплывающее меню, где мы жмем на кнопку "Создать ".
В появившемся окошке выбираем "Пустой проект ".
Откроется редактор, который на первый взгляд (да и на второй) может вызвать ступор.
Собственно, что дальше? А дальше мы начинаем писать наш собственный макрос ручками (да, всё самостоятельно). Как будет выглядеть наш макрос? Нужно составить схемку сего процесса (иначе этот процесс займет у Вас очень много времени).
Нам нужно:
- Достать значения цветов из второй колонки;
- В соответствии с этими значениями задавать цвета для первой колонки.
Итак.. Вроде бы всё просто.. Если знать, как это делать, конечно:)
шКоддинг
Перейдем к самому коду:
Function onOpen() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var entries = [{name: "Покрасить",functionName: "MakeMeHappy"}]; sheet.addMenu("Скрипты", entries); }; function MakeMeHappy(){ var sheet = SpreadsheetApp.getActiveSpreadsheet(); var range = sheet.getActiveRange(); var data = range.getValues(); if(range.getColumn() == 2){ for (var i=0;i < data.length;i++){ range.offset(i,-1,1,1).clearFormat(); range.offset(i,-1,1,1).setHorizontalAlignment("center"); range.offset(i,-1,1,1).setVerticalAlignment("center"); switch (data[i]){ case "зеленый": case "Зеленый": range.offset(i,-1,1,1).setFontColor("#00dd00"); break; case "салатовый": case "Салатовый": range.offset(i,-1,1,1).setBackgroundColor("#87dd47"); break; case "желтый": case "Желтый": range.offset(i,-1,1,1).setBackgroundColor("#ffff00"); break; case "оранжевый": case "Оранжевый": range.offset(i,-1,1,1).setFontColor("#dd7711"); break; case "красный": case "Красный": range.offset(i,-1,1,1).setFontColor("#dd0000"); break; case "фиолетовый": case "Фиолетовый": range.offset(i,-1,1,1).setFontColor("#800080"); break; default: break; } } } };
Теперь я постараюсь Вам его объяснить. Функция onOpen добавляет меню "Скрипты " к таблице при открытии оной. И выглядит это дело так:
Теперь по коду:
Var sheet = SpreadsheetApp.getActiveSpreadsheet();
Эта строчка добавляет в переменную sheet идентификатор открытого нами документа, чтобы потом по нему обращаться к документу.
Var entries = [{name: "Покрасить",functionName: "MakeMeHappy"}];
Эта переменная-массив содержит список названий менюшек и функций, которые выполняются при клике на эти менюшки.
Sheet.addMenu("Скрипты", entries);
Этот метод добавляет к нашему документу меню "Скрипты ".
Функция MakeMeHappy,
собственно, и будет нашей главной функцией, которая красит фрукты.
Сначала я объявляю переменные:
Var sheet = SpreadsheetApp.getActiveSpreadsheet(); var range = sheet.getActiveRange(); var data = range.getValues();
Соответственно, в переменной sheet находится идентификатор нашего документа. В переменной range находится выделенная нами область (например, ячейки B2:B6 ), в переменной data находятся значения этих ячеек в виде массива.
If(range.getColumn() == 2){...}
В этом условии мы проверяем, что выбранный диапазон ячеек соответствует второй колонке (в которой цвета фруктов).
For (var i=0;i < data.length;i++){...}
В этом цикле мы проходимся по каждой ячейке из диапазона B2:B
Range.offset(i,-1,1,1).clearFormat(); range.offset(i,-1,1,1).setHorizontalAlignment("center"); range.offset(i,-1,1,1).setVerticalAlignment("center");
Эти три свойства убирают форматирование ячеек A[i] (например, A1 , A2 , A3 и т.п., т.к. мы внутри цикла), а также центрируют значения в ячейке по вертикали и горизонтали.
Тут следует иметь в виду, что т.к. наш диапазон соответствует второй колонке (В2:В ), а нам надо убрать форматирование и отцентровать первую колонку, то для этого используется метод offset (номер ряда диапазона, номер колонки, кол-во рядов, кол-во колонок). Например, метод range.offset(0 ,1,4,3) для ячейки B2 (т.е. range соответствует B2:B2 ) будет означать, что мы будем воздействовать не на ячейку B2:B2 , а на диапазон [ B + 1][ 2 + 0]:[ В + 3][ 2 + (4 -1)] = C2 :E5 . Более подробно сморите в .
Switch (data[i]){ case "зеленый": case "Зеленый": range.offset(i,-1,1,1).setFontColor("#00dd00"); break; case "салатовый": case "Салатовый": range.offset(i,-1,1,1).setBackgroundColor("#87dd47"); break; ... }
Функция switch является так называемым переключателем. Она смотрит значение переменной и в соответствии с тем, что в ней хранится, выполняет определенное условие "case ". Можно её переписать в стандартном виде if else . Но получится очень неудобно. Например:
Switch (c){ case 1: условие_1; break; case 2: условие_2; break; case 3: условие_3; break; default: условие_4; break; }
Будет эквивалентно функции:
If (c == 1) условие_1; else if (c == 2) условие_2; else if (c == 3) условие_3; else условие_4;
Т.к. можно ввести цвет как с большой, так и с маленькой буквы, то нам надо по два условия, что соответствует записи case "зеленый": case "Зеленый": действие; break; (у меня это записано блочной структурой) . Нужно иметь в виду, что после каждого действия надо писать функцию break ; т.к. иначе мы будем выполнять все условия по порядку, а не то, которое нам надо. Условие default используется в том случае, если для нашей переменной нет подходящего условия.
Range.offset(i,-1,1,1).setFontColor("#00dd00");
Методы setFontColor и setBackgroundColor задают цвета текста и фона в виде #rrggbb (r-red, g-green, b-blue, диапазоны цветов) соответственно.
Теперь проверим функцию. Выделяем диапазон B2:B9 , заходим в меню "Скрипты " и выбираем опцию "Покрасить ". Смотрим, как наши фрукты обрели жизнь цвета:)
В общем-то на этом всё. Но не совсем.
Скрипты и макросы таблиц Google, дополнение
Но можно сделать небольшое дополнение, чтобы не приходилось каждый раз запускать функции вручную.
Для этого зайдите в редакторе скриптов в меню "Ресурсы " и выберите там "Триггеры текущего проекта ". Откроется менюшка, в которой уже будет наша функция onLoad . Добавляем новую функцию (1 ) и задаем название функции (2 ) и тип активации оной (3 ). Также можно нажать на "Уведомления " и добавить/убрать свой почтовый адрес из списка уведомлений.
Они будут приходить в случае, если скрипт выполнялся с ошибками.
Конечный результат действа:
Продолжения - -готовим и три. Ну и комментарии конечно содержат много вкусного.
P.S. За существование оной статьи отдельное спасибо другу проекта и члену нашей команды под ником “barn4k“.
Google Apps Script - это язык для автоматизации работы с онлайн-приложениями, появившийся в 2009 году. Его основа - классический JavaScript, обогащенный расширениями для работы с сервисами Google. После прочтения этой статьи ты овладеешь основами использования этого языка, выучишь пару приемов манипуляции с почтой и документами, а также получишь представление о необозримых возможностях Google Apps Script.
Основы использования
Начать писать Google Apps скрипты очень просто. Первым делом надо открыть редактор скриптов в любом приложении, взаимодействие с которым будем автоматизировать. В Google Docs он находится в меню «Инструменты -> Редактор скриптов». Далее надо выбрать проект, внутри которого будет располагаться скрипт (см. рис. 1). В открывшемся окне пишем код:
Function FirstExampleFunc() { Browser.msgBox("Это таки JS! "); }
Декларированную функцию можно запускать из «Инструменты -> Управление скриптами» или сделать для нее отдельную кнопку. Для этого надо прописать еще одну функцию:
Function menu() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var entries = [ {name: "Моя единственная функция", functionName: "FirstExampleFunc"}, ss.addMenu("Мои функции", entries); }
Теперь в нашем меню есть пункт под названием ExampleFunc, при клике на который открывается однострочное подменю «Моя единственная функция».
Декларированные функции можно использовать в формулах, которые вводятся внутрь ячеек электронных таблиц (см. рис. 3). Теперь перейдем к более практически полезным примерам.
WARNING
Перед запуском скрипта не забудь сделать резервную копию важной информации. Действия, выполненные GS, нельзя отменить нажатием
Работа с Google Docs
Когда встает задача автоматизации работы с офисными документами, первым делом на ум приходит VBA, одно упоминание которого оказывает на многих тотальное антиэкстатическое воздействие, вызывая болезненные воспоминания из школьного и университетского прошлого. Google Script однозначно удобнее и доступнее для понимания. Особенно для веб-разработчиков, ведь это же родной, привычный и любимый JS! Разберем пару примеров скриптов для Google Docs. Приведенный код заполняет левую верхнюю ячейку первого листа активной таблицы:
Var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets(); sheet.getRange("A1").setValue("Содержимое ячейки");
А этот код создает копию текстового документа и кладет его в определенное место:
Var source = DocsList.getFileById("SOURCE_ID"); var newFile = source.makeCopy("новое имя файла"); var targetFolder = DocsList.getFolderById("ID папки, в которой будет размещен свежесозданный файл"); newFile.addToFolder(targetFolder);
А вот так можно провести замену строк в текстовом документе:
Var doc = DocumentApp.openById("ID редактируемого документа"); doc.editAsText().replaceText("старый текст", "новый текст"); Logger.log(doc.getText())
Следующий пример кода подсвечивает определенные слова в тексте:
Var doc = DocumentApp.openById("id документа"); var textToHighlight = "текст для подсветки"; var highlightStyle = {}; highlightStyle = "#FF0000"; var paras = doc.getParagraphs(); var textLocation = {}; for (i=0; i
WARNING
Имей в виду, что Gmail не только защищает от входящего спама, но и ограничивает рассылку исходящего. Больше 500 писем за сутки с помощью Google Apps Script не выйдет.
Работа с Google Translate
С помощью Google Apps Script можно переводить текстовые строки с одного языка на другой. Пример:
Var word = LanguageApp.translate("кукушка", "ru", "es"); Logger.log(word); // Скрипт выведет в консоль "cuco" - кукушка по-испански
Коды для языков можно посмотреть в адресной строке сервиса Google Translate.
INFO
Если выделить код и нажать
Работа с Google Drive
Google Apps Script может работать с файлами пользователя, размещенными на Google Drive. Этот скрипт выводит в консоль имена всех файлов пользователя:
Var files = DriveApp.getFiles(); while (files.hasNext()) { var file = files.next(); Logger.log(file.getName()); }
К файлам можно применять несколько десятков различных методов. Вот некоторые из них:
- addEditor(«email пользователя») - наделяет пользователя правами на редактирование файла;
- getOwner() - узнать владельца файла;
- makeCopy(«имя», «путь») - создать копию файла;
- getLastUpdated() - возвращает пользователя, который внес последнее изменение.
Работа с Google Contacts
Адресная книга также может быть подвергнута автоматизированной обработке. Приведенный ниже код копирует все контакты из группы «Редакция» в лист Google Spread Sheet:
Var group = ContactsApp.getContactGroup("Редакция"); var contacts = group.getContacts(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Контакты редакции"); for (var i in contacts) { // Сохраняем данные о контактах в ячейки: имя, фамилия, номер телефона sheet.getRange(i, 1, 1, 1).setValue(contacts[i].getGivenName()); sheet.getRange(i, 2, 1, 1).setValue(contacts[i].getFamilyName()); sheet.getRange(i, 3, 1, 1).setValue(contacts[i].getPhones()); // И еще есть метод для получения номера пейджера (!) контакта sheet.getRange(i, 4, 1, 1).setValue(contacts[i].getPager()); }
Работа с Google Tasks
С помощью Google Apps Scripts можно работать с сервисом Google Task - создавать новые задачи и парсить уже имеющиеся.
Этот код создает новое дело в списке:
// Найти ID тасклиста можно внутри адресной строки в сервисе Google Task var taskListId="id тасклиста,"; var newTask = { title: "Выбросить финиковые косточки", notes: "Не забыть косточки под кроватью" }; newTask = Tasks.Tasks.insert(newTask , taskListId); Logger.log ("Задача с ID "%s" создана", newTask.id);
А таким образом можно вывести список нумерованных задач в консоль:
// Кладем все задачи списка в массив var tasks = Tasks.Tasks.list(taskListId); for (var i = 0; i < tasks.items.length; i++) { var task = tasks.items[i]; Logger.log(i. ". ",%s, task.title, task.id); }
Задачи можно перемещать из одного списка в другой с помощью метода move, дополнять с помощью метода update и удалять с помощью метода delete.
Всего есть несколько десятков методов для работы с задачами. Полный их список доступен вGoogle Apps Script References для Google Tasks .
Работа с календарем
Создавать события в календаре тоже можно автоматически (и так же, как в случае с рассылкой, формировать информацию о них из строк таблицы). Код для создания события:
Var timeZone = CalendarApp.getTimeZone(); var description = Utilities.formatString("%s from %s to %s", "заголовок события", dateString_("дата начала события", "часовой пояс"), dateString_("дата конца события", "часовой пояс")); CalendarApp.createEventFromDescription(description);
Формы обмена скриптами
Гаджет - это приложение-контейнер, которое размещается на веб-странице и исполняет определенные функции. Примеры: мини-блок в углу страницы с прогнозом погоды или календарем. Чтобы поместить Google Script внутрь гаджета, необходимо в меню редактора скриптов выбрать пункт «Publish -> Deploy as web app».
INFO
А если нажать
События
Можно настроить скрипт так, чтобы он выполнялся после определенного события. К примеру, после открытия/редактирования электронной таблицы или отправки данных формы.
Работа с базами данных
Для этого существует сервис для работы с базами данных Google Cloud SQL. По сути - классический MySQL в облаке. Может взаимодействовать с Google Apps Script по стандарту Java Database Connectivity. Вот пример кода, который производит чтение записей из таблицы:
Var conn = Jdbc.getConnection(dbUrl, user, userPwd); var start = new Date(); var stmt = conn.createStatement(); stmt.setMaxRows(1000); var results = stmt.executeQuery("SELECT * FROM entries"); var numCols = results.getMetaData().getColumnCount(); while (results.next()) { var rowString = ""; for (var col = 0; col < numCols; col++) { rowString += results.getString(col + 1) + "\t"; } Logger.log(rowString) } results.close(); stmt.close();
Стоимость использования сервиса - 88 долларов в год за 10 Гб свободного места. С другими базами данных Google Apps Script, к сожалению, работать не может. Если ты запланировал написать скрипт, который должен взаимодействовать с данными, не стоит сразу расстраиваться или истощать свой бюджет пожертвованиями на закупку квадроциклов для жителей Кремниевой долины. Есть два способа выкрутиться из этой ситуации:
- первый - хранить данные в виде таблиц на Google Drive;
- второй - разместить базу на стороннем сервере, на нем же разместить {php}{hode.js}{python}{и т. д.} скрипт, который будет выполнять к ней запрос и возвращать ответ в формате JSON или XML, а его, в свою очередь, подвергать парсингу внутри GS.
Приложения, с которыми может взаимодействовать Google Apps Script
Я думаю, что далеко не каждый из наших читателей успел опробовать все онлайн-сервисы Google. В целях расширения кругозора и стимуляции творческого воображения приведем краткий обзор возможностей приложений, работу которых можно автоматизировать с помощью Google Apps Script.
- Google Mail - почтовый клиент. Наиболее интересна в нем возможность отправлять письма людям, адреса которых неизвестны. Для этого надо включить настройку «Отправлять письма пользователям Google+» и ввести имя и фамилию получателя в поле «Кому».
- Google Calendar - органайзер. Самое удобное в нем - возможность отправки SMS-уведомлений о событиях на номера российских операторов.
- Google Contacts - приложение для хранения контактов. Самый цимес его в том, что если ты случайно синхронизируешь свой список контактов с новым смартфоном и все имена сотрутся, то сможешь попросить у Google резервную копию предыдущей версии, которая навечно сохранена в его архивах.
- Google Drive - облачное хранилище данных. 15 Гб, на которых также размещаются данные всех других приложений, доступны бесплатно.
- Google Maps - онлайн-карты. Жителям СНГ повезло, у них есть альтернативный инструмент для построения маршрутов и просмотра панорам улиц - Яндекс.Карты. Для жителей большинства других территорий альтернатив нет. Google Maps - единственная всемирная картографическая система, позволяющая искать населенные пункты, вводя названия на языке государства, в котором они находятся. Допустим, не Kotlas, а Котлас, не Vagharshapat, а Վաղարշապատ.
- Google Docs - онлайн-редактор офисных документов. Во время написания статьи этот сервис совершил мега-прорыв - появилась возможность редактировать документы, созданные в Microsoft Office. Это произошло после интеграции сервиса с функционалом приложения Quickoffice. Ради интереса попробовала отредактировать в Google Docs пояснительную записку к диплому (как пример документа с простейшим форматированием). Преобразование docx в гугл-формат пришлось ждать около минуты, и внешний вид текста явно отличался от оригинала.
- Google Forms позволяет создавать формы для сбора различных данных (онлайн-опрос, страницу регистрации на событие, обратную связь для сайта и прочее), которые можно привязать к таблицам в различных форматах (HTML, CVS, TXT, PDF, RSS, XLS, ODF). Собранные данные хранятся на Google Drive.
- Google Sites - бесплатный хостинг (100 Мб) с предельно ограниченным функционалом и собственной wiki-разметкой. Полнофункциональный HTML, а также CSS и JS недоступны.
SRC
По старой доброй традиции, которой уже почти три месяца, мы выложили несколько исходничков на GitHub:
- autodeletemail.gs - удаляет письма, с момента получения которых прошло n-ное количество дней;
- snoozeemails.gs - скрипт для повторной отправки самому себе прочитанных писем через определенный промежуток времени;
- sendsmsaboutemails.gs - настраивает отправку SMS в случае получения писем, соответствующих определенным критериям. Перед его использованием надо указать свой номер телефона Google Calendar;
- savemailtopdfindrive.gs - сохраняет содержимое письма в файлах на Google Drive;
- fromcalendartospreadsheet.gs - записывает информацию из календаря в электронную таблицу;
- sendmailsfromspreadsheet.gs - рассылает письма по списку адресов из электронной таблицы;
- createdocsfromspread.gs - генерирует текстовые документы из данных электронной таблицы.
Advanced Google Services
У Google есть множество API для разработчиков, которые можно внедрять в программы, написанные на Google Apps Script. Для этого надо подключить в редакторе скриптов эту возможность (в меню Resources, далее Advanced Google services). После этого можно будет задействовать возможности следующих сервисов:
- Google AdSense - сервис для работы с контекстными рекламными объявлениями.
- Google Analytics - осуществляет анализ посещаемости веб-сайтов и мобильных приложений.
- Google BigQuery - позволяет производить различные манипуляции (запись, чтение, перемещение и так далее) над большими объемами данных, а также анализировать их.
- Google Fusion Tables - экспериментальный сервис, позволяющий размещать данные в облаке, отправлять к ним запросы и получать результаты выполнения в формате JSON и CSV. Из которых, в свою очередь, можно формировать электронные таблицы, карты, графики и другие виды визуального представления данных.
- Google Domains - сервис для регистрации доменов (новый проект, открылся в конце июня 2014 года).
- Google Mirror - API для взаимодействия с Google Glass.
- Google Prediction - сервис для анализа данных (основанный на технологии машинного обучения). Позволяет внедрять в приложения следующие фичи: классификатор документов и писем, расчет churn rate (показатель оттока пользователей), детектор спама, оптимизатор маршрутизации сообщений и множество других интересных вещей, достойных отдельной статьи.
- Google Tasks - встроенный в Gmail сервис для составления списков дел.
- Google URL Shortener - любимый нашим журналом сервис для сокращения длинных ссылок.
- YouTube Analytics - сервис для анализа статистики просмотров видео на YotTube. Примечателен возможностью узнать демографические и географические характеристики пользователей, смотрящих определенный видеоролик. Ведь интересно выложить очередную копию клипа на песню «До свидания, кореша» и проанализировать, какого пола, возраста и места жительства ее слушатели.