Getting started with Google Apps Script
Enough intro — let’s dig in!
The best way to learn Google Apps Script is to write some code. Getting started is very straightforward — all you need is a Google account, a browser, and an internet connection.
To get started, go to Google Drive and create a new spreadsheet. Give your spreadsheet a name, for example, My First Script.
You can open the Apps Script editor by clicking Extensions > Apps Script from the menu (or Tools > Script editor if you can’t find the Extensions menu).
This will launch the Apps Script editor in a separate tab in your browser.
How to use Google Apps Script Editor
Now, we’ll show you how to use the Apps Script editor. For example, how to rename your project, add a new function, and save your changes.
How to rename your project
Scripts are organized as projects. By default, the project name for your scripts embedded within the spreadsheet file you just created is “Untitled project”.
At the top left, you’ll see the project name. Click on it to rename it. A small window will appear, allowing you to enter a new project title.
There is also a Code.gs file opened in the editor. It has a default function, which is blank, named .
function myFunction() { }
How to add your first function
Delete the code block so that your editor is now blank. Then, copy and paste the following code:
function writeHelloWorld() { var greeting = 'Hello world!'; var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange('A1').setValue(greeting); }
Your entire code will look like this:
The above function writes “Hello world!” to the spreadsheet. It demonstrates that, by using Apps Script, you can manipulate a spreadsheet.
The code uses the class to get an object representing the active sheet using the method. Then, it gets a single cell with the address A1 using the method. Another method, , is then called with a string argument to write to A1.
How to save your changes
Notice that there is an orange circle icon on the left side of the Code.gs file name. It means your changes have not been saved yet.
To save your changes, press Ctrl+S on your keyboard. Alternatively, you can click the disk icon (
How to run Google Apps Script
Click the Run button to execute your function. For the first time you run the script, you will need to authorize it to access your data.
Click the Review permissions button. Another pop-up will appear, asking you to select an account to continue. After that, you may see a warning screen saying “Google hasn’t verified this app“. Continue anyway — because, in this case, we know it’s safe. Then, allow the script to access your Google account.
Once authorized, the function will execute, and you’ll see “Hello world!” in A1:
Работа с базами данных
Для этого существует сервис для работы с базами данных 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
Стоимость использования сервиса — 88 долларов в год за 10 Гб свободного места. С другими базами данных Google Apps Script, к сожалению, работать не может. Если ты запланировал написать скрипт, который должен взаимодействовать с данными, не стоит сразу расстраиваться или истощать свой бюджет пожертвованиями на закупку квадроциклов для жителей Кремниевой долины. Есть два способа выкрутиться из этой ситуации:
- первый — хранить данные в виде таблиц на Google Drive;
- второй — разместить базу на стороннем сервере, на нем же разместить {php}{hode.js}{python}{и т. д.} скрипт, который будет выполнять к ней запрос и возвращать ответ в формате JSON или XML, а его, в свою очередь, подвергать парсингу внутри GS.
Работа с 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
Задачи можно перемещать из одного списка в другой с помощью метода move, дополнять с помощью метода update и удалять с помощью метода delete.
Всего есть несколько десятков методов для работы с задачами. Полный их список доступен вGoogle Apps Script References для Google Tasks .
Из текста в цифру
Через стандартные функции:
- Удаляю пробелы (если они там есть) — Trim:
2. Заменяю спецсимволы на пустоту — Subsitute:
3. Заменяю знак доллара на пустоту — Subsitute:
4. Привожу результат к числовому значению — Value:
Так как тикеры из списка не только долларовые, но и рублёвые, необходимо так же через substitute сделать замену «₽» на пустоту. Если в итоге объединить всё в одну формулу в рамках одной ячейки, получится примерно следующий «вложенный монстр»:
Далее, дело за малым — распространить importxml и формулу выше на все тикеры.
Что же, первую часть задачи я решил. У меня есть цена на каждый указанный тикер.
Но это только пол дела. Цену надо ещё и обновлять.
И вот тут в дело вступают google apps scripts.
Advanced
Using Google Apps Script services
Custom functions can call certain
Google Apps Script services to perform more complex
tasks. For example, a custom function can call the
Language service to translate an English
phrase into Spanish.
Unlike most other types of Apps Scripts, custom functions never ask users to
authorize access to personal data. Consequently, they can only call services
that do not have access to personal data, specifically the following:
Cache | Works, but not particularly useful in custom functions |
HTML | Can generate HTML, but cannot display it (rarely useful) |
JDBC | |
Language | |
Lock | Works, but not particularly useful in custom functions |
Maps | Can calculate directions, but not display maps |
Properties |
only gets the properties of the spreadsheet owner. Spreadsheet editors can’t set user properties in a custom function. |
Spreadsheet | Read only (can use most methods, but not ). Cannot open other spreadsheets ( or ). |
URL Fetch | |
Utilities | |
XML |
If your custom function throws the error message , the service requires user authorization and thus cannot be
used in a custom function.
To use a service other than those listed above, create a
custom menu that runs an Apps Script function
instead of writing a custom function. A function that is triggered from a menu
will ask the user for authorization if necessary and can consequently use all
Apps Script services.
Sharing
Custom functions start out bound to the
spreadsheet they were created in. This means that a custom function written in
one spreadsheet can’t be used in other spreadsheets unless you use one of the
following methods:
- Click Extensions > Apps Script to
open the script editor, then copy the
script text from the original spreadsheet and paste it into the script editor
of another spreadsheet. - Make a copy of the spreadsheet that contains the custom function by clicking
File > Make a copy. When a spreadsheet is copied, any scripts attached to
it are copied as well. Anyone who has access to the spreadsheet can copy the
script. (Collaborators who have only view access cannot open the script editor
in the original spreadsheet. However, when they make a copy, they become the
owner of the copy and can see the script.) - Publish the script as a Google Sheets Editor Add-on.
Optimization
Each time a custom function is used in a spreadsheet, Google Sheets makes a
separate call to the Apps Script server. If your spreadsheet contains dozens (or
hundreds, or thousands!) of custom function calls, this process can be quite
slow.
Consequently, if you plan to use a custom function multiple times on a large
range of data, consider modifying the function so that it accepts a range as
input in the form of a two-dimensional array, then returns a two-dimensional
array that can overflow into the appropriate cells.
For example, the function shown above can be rewritten to accept a
single cell or range of cells as follows:
The above approach uses the
map method of JavaScript’s object to recursively
call on every value in the two-dimensional array of cells. It returns a
two-dimensional array that contains the results. This way, you can call
just once but have it calculate for a large number of cells at once, as shown in
the screenshot below. (You could accomplish the same thing with nested
statements instead of the call.)
Similarly, the custom function below efficiently fetches live content from the
Internet and uses a two-dimensional array to display two columns of results with
just a single function call. If each cell required its own function call, the
operation would take considerably more time, since the Apps Script server would
have to download and parse the XML feed each time.
These techniques can be applied to nearly any custom function that is used
repeatedly throughout a spreadsheet, although the implementation details will
vary depending on the function’s behavior.
Custom function guidelines
Congratulations on completing the exercises for custom functions. As you use custom functions in your projects, it’s important to understand they have certain restrictions. The following list summarizes the limitations detailed in the guide:
- Don’t create custom functions that require user authorization. Rather, build your custom functions to fulfill simpler tasks such as sample data calculations, text editing, etc. Go to .
- Don’t name a custom function the same as another built-in function, or end the name with an underscore. Review the .
- Don’t pass variable arguments to custom functions. You can only pass deterministic (fixed) values to custom functions as arguments. Passing variable arguments, such as the result of , will break the custom function. See the .
- Don’t create functions that take more than 30 seconds to complete. If it takes longer an error will occur, so keep the function code simple and limited in scope. It’s best to keep the calculations conducted in custom functions as simple as possible. View the .
Передать дату в объект Date — в формате строки
Мы также можем использовать строчные выражения для передачи в объект и получения соответствующего момента времени.
В этом случае в объекте будет автоматически использоваться метод для определения даты и времени, которые мы в него передаем.
1newDate('2020-09-20'); 2 3 4newDate('2020/09/20'); 5 6 7newDate('September 20, 2020'); 8 9 10newDate('20 September 2020'); 11 12 13newDate('September 2020'); 14 15 16newDate('2020 September'); 17 18 19newDate('2020-09'); 20
Также есть возможность использовать метод , который возвращает временную метку в миллисекундах.
1newDate('September 20, 2020'); 2 3 4Date.parse('September 20, 2020'); 5
ЧИСТРАБДНИ.МЕЖД
Тоже считает только рабочие дни, но здесь можно указать, в какие дни недели у вас выходные, если это не стандартные суббота и воскресенье. Первый и второй аргумент, как и в описанной выше ЧИСТРАБДНИ(). Третьим указываем выходные в двойных кавычках: «0» – рабочие дни, «1» – выходные. Значит «0001110» – в четверг, пятницу и субботу мы отдыхаем. В конце добавьте диапазон с праздниками.
Теперь обратите внимание, какими способами можно записывать даты в качестве аргументов для функций
- Вы можете ссылаться на ячейки с ними А2, А16. Во всех примерах выше я делала именно так.
- Можно писать их в двойных кавычках прямо в строке формул – «08.07.2018».
- А если нужно использовать сегодняшнюю дату, тогда аргументом будет ТДАТА().
Теперь вы знаете, какие функции в Гугл Таблице можно использовать, если придется работать с датой или временем. Разобрались мы, как их применять на практике, и вывести текущую дату в нужной ячейке.
Работа с 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
Задачи можно перемещать из одного списка в другой с помощью метода move, дополнять с помощью метода update и удалять с помощью метода delete.
Всего есть несколько десятков методов для работы с задачами. Полный их список доступен вGoogle Apps Script References для Google Tasks .
Get started
Apps Script includes special APIs to let you programmatically create, read, and
edit Google Sheets. Apps Script can interact with Google Sheets in two broad
ways: any script can create or modify a spreadsheet if the script’s user has
appropriate permissions for the spreadsheet, and a script can also be
bound to a spreadsheet, which
gives the script special abilities to alter the user interface or respond when
the spreadsheet is opened. To create a bound script, select
Extensions > Apps Script from within
Google Sheets.
The Spreadsheet service treats Google
Sheets as a grid, operating with two-dimensional arrays. To retrieve the data
from the spreadsheet, you must get access to the spreadsheet where the data is
stored, get the range in the spreadsheet that holds the data, and then get the
values of the cells. Apps Script facilitates access to the data by reading
structured data in the spreadsheet and creating JavaScript objects for them.
Reading data
Suppose you have a list of product names and product numbers that you store in
a spreadsheet, as shown in the image below.
The example below shows how to retrieve and log the product names and product
numbers.
View logs
To view the data that has been logged, at the top of the script editor, click
Execution log.
The above code appends a new row at the bottom of the spreadsheet, with the
values specified. If you run this function, you’ll see a new row added to the
spreadsheet.
MySQL | Функции для работы с датами и временем
Последнее обновление: 26.05.2018
MySQL имеет ряд встроенных функций для работы с датами и временем.
Получение даты и времени
- Функции NOW(), SYSDATE(), CURRENT_TIMESTAMP() возвращают текущую локальную дату и время на основе системных часов в виде объекта datetime. Все три функции возвращают одинаковый результат SELECT NOW(); — 2018-05-25 21:34:55
SELECT SYSDATE(); — 2018-05-25 21:34:55
SELECT CURRENT_TIMESTAMP(); — 2018-05-25 21:32:55 - Функции CURDATE и CURRENT_DATE возвращают текущую локальную дату в виде объекта date: SELECT CURRENT_DATE(); — 2018-05-25
SELECT CURDATE(); — 2018-05-25 - Функции CURTIME и CURRENT_TIME возвращают текущее время в виде объекта time: SELECT CURRENT_TIME(); — 20:47:45
SELECT CURTIME(); — 20:47:45 - UTC_DATE возвращает текущую локальную дату относительно GMT SELECT UTC_DATE(); — 2018-05-25
- UTC_TIME возвращает текущее локальное время относительно GMT SELECT UTC_TIME(); — 17:47:45
Парсинг даты и времени
- DAYOFMONTH(date) возвращает день месяца в виде числового значения
- DAYOFWEEK(date) возвращает день недели в виде числового значения
- DAYOFYEAR(date) возвращает номер дня в году
- MONTH(date) возвращает месяц даты
- YEAR(date) возвращает год из даты
- QUARTER(date) возвращает номер квартала года
- WEEK(date ) возвращает номер недели года. Необязательный параметр позволяет задать стартовый день недели. Если этот параметр равен 1, то первым днем считается понедельник, иначе воскресенье
- LAST_DAY(date) возвращает последний день месяца в виде даты
- DAYNAME(date) возвращает название дня недели
- MONTHNAME(date) возвращает название текущего месяца
- HOUR(time) возвращает час времени
- MINUTE(time) возвращает минуту времени
- SECOND(time) возвращает секунду времени
Примеры функций:
Функция EXTRACT
Функция EXTRACT извлекает из даты и времени какой-то определенный компонент. Ее формальный синтаксис:
EXTRACT(unit FROM datetime)
Значение datetime представляет исходную дату и (или) время, а значение unit указывает, какой компонент даты или времени будет извлекаться. Параметр unit может представлять одно из следующих значений:
- SECOND (секунды)
- MINUTE (минуты)
- HOUR (час)
- DAY (день)
- MONTH (месяц)
- YEAR (год)
- MINUTE_SECOND (минуты и секунды)
- HOUR_MINUTE (часы и минуты)
- DAY_HOUR (день и часы)
- YEAR_MONTH (год и месяц)
- HOUR_SECOND (часы, минуты и секунды)
- DAY_MINUTE (день, часы и минуты)
- DAY_SECOND (день, чаы, минуты и секунды)
Примеры вызова функции:
Функции для манипуляции с датами
Ряд функций позволяют производить операции сложения и вычитания с датами и временем:
- DATE_ADD(date, INTERVAL expression unit) возвращает объект DATE или DATETIME, который является результатом сложения даты date с определенным временным интервалом. Интервал задается с помощью выражения INTERVAL expression unit, где INTERVAL предоставляет ключевое слово, expression — количество добавляемых к дате единиц, а unit — тип единиц (часы, дни и т.д.) Параметр unit может иметь те же значения, что и в функции EXTRACT, то есть DAY, HOUR и т.д.
- DATE_SUB(date, INTERVAL expression unit) возвращает объект DATE или DATETIME, который является результатом вычитания из даты date определенного временного интервала
- DATEDIFF(date1, date2) возвращает разницу в днях между датами date1 и date2
- TO_DAYS(date) возвращает количество дней с 0-го года
- TIME_TO_SEC(time) возвращает количество секунд, прошедших с момента полуночи
Примеры применения:
Форматирование дат и времени
- DATE_FORMAT(date, format) возвращает объект DATE или DATETIME, отформатированный с помощью шаблона format
- TIME_FORMAT(date, format) возвращает объект TIME или DATETIME, отформатированный с помощью шаблона format
Обе функции в качестве второго параметра принимают строку форматирования или шаблон, который показывает, как оформатировать значение. Этот шаблон может принимать следующие значения:
- %m: месяц в числовом формате 01..12
- %с: месяц в числовом формате 1..12
- %M: название месяца (January…December)
- %b: аббревиатура месяца (Jan…Dec)
- %d: день месяца в числовом формате 00..31
- %e: день месяца в числовом формате 0..31
- %D: номер дня месяца с суффиксом (1st, 2nd, 3rd…)
- %y: год в виде двух чисел
- %Y: год в виде четырех чисел
- %W: название дня недели (Sunday…Saturday)
- %a: аббревиатура дня недели (Sun…Sat)
- %H: час в формате 00..23
- %k: час в формате 0..23
- %h: час в формате 01..12
- %l: час в формате 1..12
- %i: минуты в формате 00..59
- %r: время в 12-ти часовом формате (hh:mm:ss AM или PM)
- %T: время в 24-ти часовом формате (hh:mm:ss)
- %S: секунды в формате 00..59
- %p: AM или PM
Примеры применения:
В качестве примера использования функций найдем заказы, которые были сделаны 5 дней назад:
Послесловие к этому посту, спустя больше года публикации
Уважаемые читатели! Ведение этого сайта — хобби вне основной работы, нацеленное на поднятие уровня образованности в использовании гугл таблиц.
За весь срок мне поступило (и продолжает поступать) достаточно много вопросов, как сюда, так и в почту по поводу парсинга:
- других ресурсов;
- изменения кода расписанных здесь вариантов;
- нерабочего своего кода;
- нерабочих своих формул в книгах.
Суть таких вопросов примерно одна и та же — дать конкретный совет (с формулами и кодами) как сделать так чтобы все работало у конкретного читателя под конкретную задачу, либо вообще написать отлаженный и работающий код за читателя. То есть мне надо потратить свое время, чтобы решить вашу проблему — в обычном мире это платная услуга: консультация или разработка.
В связи с этим прошу посмотреть в интернете примерные расценки часа работы программиста с опытом от года и иметь это в виду, прежде чем описывать конкретные задачи, присылать ссылки не неработающие скрипты или таблицы с просьбой совета или помощи.
Google Apps Script: полезные функции и фишки для SEO (часть первая)
Всем привет. Я SEO-специалист Netpeak в отделе по работе с крупными проектами. Масштабные проекты — это всегда большие объемы данных, много анализа и исследований, которые отнимают много времени, поэтому без автоматизации тут не обойтись. Вообще в работе очень сильно помогает софт ребят из Netpeak Software , за это им отдельное большое спасибо.
В этой рубрике (если зайдет, конечно), я буду демонстрировать свои небольшие скрипты, полезные функции и фишки Google Apps Script. В конце каждого поста будет бонус — небольшой скрипт.
Так как это первый пост, думаю, нужно написать о языке и ограничениях.
Скрипт работает в сервисах:
- Google Docs.
- Google Sheets.
- Google Slides.
- Google Forms.
Какой уровень владения языками программирования должен быть, чтобы понимать и самостоятельно писать скрипт? Ответ простой: любой, главное желание, терпение и смекалка =)
Я буду приводить примеры скриптов с подробными комментариями, чтобы было понятно.
Как создать скрипт Google Apps Script для Google Sheets
По традиции, выводим надпись «Hello world»:
1. Заходим в таблицу.
2. Переходим во вкладку «Инструменты» — «Редактор скриптов».
3. Мы видим рабочую область, где и нужно писать скрипты.
4. Вставляем код:
5. Запускаем нашу функцию:
6. Сохраняем проект и проходим этап авторизации.
Шаг 1:
Шаг 2:
Шаг 3:
Шаг 4:
Шаг 5:
Разбор кода скрипта в Google Apps Script
В этой строке мы создаем объект класса SpreadsheetApp, чтобы в дальнейшем мы могли использовать различные методы этого класса.
В этой строке грубо говоря мы присваиваем переменной sheetOne так называемый адрес вкладки, которая называется Пост 1. Это упрощает работу с таблицами.
В этой строке мы выводим надпись «Hello world» в ячейку A1 на вкладке «Пост 1». Тут нужно разобраться подробно:
-
- sheetOne — как мы описали выше, это «ссылка» на нашу вкладку «Пост 1».
- .getRange(1,1) — это метод, который указывает, что мы будем работать с ячейкой, которая имеет адрес: колонка 1 (A) и столбец 1.
- .setValue(«Hello world») — это метод, который записывает то, что в скобках. В нашем случае это «Hello world».
Структура самой функции:
Бонус: как спарсить тег Title и метатег Description
1. В колонке А Вставляем наши URL.
2. Запускаем скрипт.
3. Забираем результаты.
Какие сайты скрипт не сможет спарсить:
Вывод
Google Apps Script помогает бесплатно автоматизировать много ручной работы, например:
- Автоматически выгружать различные показатели в Google Analytics и настроить оповещение через электронную почту, если данный показатель изменился на какой-то процент.
- Выгружать данные по количеству кликов и показов из сервиса Google Search Console и также оповещать об изменениях.
- Мониторить изменения на сайте (наличие новых страниц, изменения в метатегах, коды ответа сервера и так далее).
Конечно, в скриптовом языке Google Apps Script есть много других полезных проверок и расчетов. Их я продемонстрирую в следующих статьях.
Если хотите поделиться своими фишками или задать вопросы, добро пожаловать в комментарии.
С SEO познакомился в 2015 году. Работал и обучался в компании Palmira Studio. C августа 2015 года работаю SEO-специалистом в агентстве интернет-маркетинга Netpeak. Сертификация: Google Analytics, Google AdWords по направлениям «поисковая и мобильная реклама».
Шаги для записи вашего первого макроса
Давайте пройдемся по процессу создания супер базового макроса, выполнив следующие шаги:
- Откройте новый Google Sheet (вариант 1: введите sheet.new в браузере, чтобы мгновенно создать новый лист; вариант 2: в папке «Диск» нажмите Shift + s, чтобы мгновенно создать новый лист в этой папке. ). Введите несколько слов в ячейку A1.
- Зайдите в меню макроса: Инструменты> Макросы> Запись макроса
У вас есть выбор между Абсолютными или Относительными ссылками. Для этого первого примера давайте выберем относительные ссылки:
Абсолютные ссылки каждый раз применяют форматирование к одному и тому же диапазону ячеек (например, если вы выберете A1:D10, он всегда применяет макрос к этим ячейкам). Это полезно, если вы хотите каждый раз применять шаги к новому пакету данных, и каждый раз он находится в одном и том же месте диапазона.
Относительные ссылки применяют форматирование в зависимости от того, где находится ваш курсор (если вы записали свой макрос, примененный к ячейке A1, но затем повторно запустили макрос, когда вы выбрали ячейку D5, шаги макроса теперь будут применены к D5). Это полезно, например, если вы хотите применить формулу к различным ячейкам.
Примените некоторое форматирование к тексту в ячейке A1 (например, выделите его жирным шрифтом, увеличьте его, измените цвет и т.д.). Вы заметите, что регистратор макросов регистрирует каждый шаг:
Когда вы закончите, нажмите Сохранить и дайте вашему макросу имя:
Нажмите СОХРАНИТЬ еще раз, и Google Sheets запомнит ваш макрос.
Ваш макрос теперь доступен для использования через меню Инструменты > Макросы:
При первом запуске макроса вам будет предложено предоставить ему разрешение на запуск. Это мера безопасности, обеспечивающая выполнение кода в фоновом режиме. Так как вы создали его, продолжать безопасно.
Сначала нажмите «Продолжить» во всплывающем окне «Авторизация»:
Затем выберите свой аккаунт Google:
Наконец, просмотрите разрешения и нажмите Разрешить:
Затем макрос запускается и повторяет действия, которые вы записали, в новой выбранной ячейке!
Поздравляем с первым макросом Google Sheets! Видите, это было легко!
Вот быстрый GIF, показывающий процесс записи макроса в полном объеме:
И вот как это выглядит при запуске:
Google Apps Script limitations
As GAS runs on Google’s server, Google sets limits on its execution, such as:
- A script cannot run continuously for more than 6 minutes. So, for example, if you use “looping” in your function, ensure that it is bug-free and will not cause an endless execution. Also, avoid handling a huge dataset that may cause the script to run for more than 6 minutes.
- A custom function cannot execute for more than 30 seconds. So, avoid handling large external data using custom functions. Otherwise, you may see a “Maximum execution time exceeded” error.
Please note that the above limitations may change in the future. You can find the complete list of GAS limitations .
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. Примечателен возможностью узнать демографические и географические характеристики пользователей, смотрящих определенный видеоролик. Ведь интересно выложить очередную копию клипа на песню «До свидания, кореша» и проанализировать, какого пола, возраста и места жительства ее слушатели.