Гугл таблицы позволяют автоматизировать большое количество процессов. Можно запрограммировать достаточно большое количество процессов.
Скрипт - это программа, которая выполняет одно или несколько действий.
Например, когда вы записываете макрос - гугл таблицы автоматически формируют скрипт. Все скрипты хранятся в отдельном разделе и не видны на рабочем поле Гугл таблиц, но сохраняются вместе с вашим рабочим файлом. Т.е. переслав кому-либо рабочую книгу, вы пересылаете и скрипты тоже.
Для того, чтобы перейти к редактору скриптов, например чтобы отредактировать либо посмотреть скрипт, нужно выполнить следующие действия:
Из меню "Расширения" выполняем пункт "App Script"
После выполнения этой команды запустится редактор скриптов
Любая функция начинается с объявления того, что это функция "function" и имеет имя (на образце сверху "myFunction"). Далее в скобках указываются аргументы - не обязательно. И уже в фигурных стрелках идет сам скрипт (программа).
Что такое аргументы?
Это некие данные, учитывая которые нужно провести вычисления.
Например возьмем функцию y=x*2
Эта функция умножает число x на два и присваивает результат переменной y
Назовем эту функцию, допустим umnogen
Как будет выглядеть скрипт этой функции (упрощенно):
function umnogen(x)
{
y=х*2
}
Для того, чтобы запустить эту функцию нужно будет ввести команду. Например, давайте с помощью функции удвоим число 10
umnogen(10)
Результатом выполнения такой команды будет присвоение игрику числа 20 (10 умножим на 2)
Можно передавать при вызове функции не один аргумент, а достаточно много. Всё зависит от выполняемых задач, например
function my_umnogen(x, y, z)
В нашем примере есть переменная y. На самом деле она не понятна для нашей программы. Программа не знает, что это за переменная. Поэтому все переменные нужно обозначить - сообщить компьютеру, что это за переменные.
Для описания (обозначения) переменных служит специальный раздел в программе.
Возможны 2 варианта обозначения того, что мы описываем переменную
Var - описанные так переменные будут распространяться на все функции и будут постоянно висеть в памяти. Мы сможем использовать их и в других наших функциях
let - это локальные переменные, которые будут действовать только внутри нашей функции (либо внутри блока), после завершения выполнения функции эти переменные будут удалены.
Пример:
let ss = SpreadsheetApp.getActiveSpreadsheet();
здесь переменной ss мы присваиваем значение равное нашей открытой книги
Для простоты дальнейшей рабаты давайте уясним несколько полезных аментов.
Функцию всегда начинаем писать следующим образом
function myfunction()
{
let ss = SpreadsheetApp.getActiveSpreadsheet();
let aktSheet = ss.getSheetByName('Лист1');
}
Давайте разберем, что я вставил в эту заготовку
function myfunction() - это начало моей функции, соответственно с именем функции. Никакие аргументы не запрашиваем и не передаем, в скобках, соответственно, ничего нет
Далее в фигурных скобках идет тело программы.
В заготовке есть описание двух переменных.
let ss = SpreadsheetApp.getActiveSpreadsheet(); - это мы локально (только для этой функции) описываем переменную ss, одновременно присваиваем ей значение, равное значению (имени) нашей рабочей книги (нашего файла гугл таблиц).
Посмотрите, как формируется команда присваивания - методом последовательного перебора (об более общего к частному). Сначала идет обращение ко всему "справочнику" функций гугл таблицы (SpreadsheetApp), а затем, через точку, уточняем, что именно нам нужно - "Получить значение активной книги (getActiveSpreadsheet()).
Запомните: get-получить, set-назначить
let aktSheet = ss.getSheetByName('Лист1'); - локально описываем переменную aktSheet, которой присваиваем значение листа, на котором будем выполнять дальнейшие действия. В моем примере это "Лист1". Можно назначить лист принудительно, как в моем примере, а можно спросить у кампьютера, с какого листа была запущена команда и уже работать именно на нем. В этом случае вместо ss.getSheetByName('Лист1'), используем ss.getActiveSheet()
Давайте разберем пример:
У нас есть таблица:
В ячейках А2 и В2 есть числа. Давайте сложим эти числа и выведем их сумму в ячейку С2
Начнем писать нашу функцию
function myfunction()
{
let ss = SpreadsheetApp.getActiveSpreadsheet();
let aktSheet = ss.getSheetByName('Лист1');
}
Это наша стандартная заготовка.
Далее нам нужно создать две переменные и назначить им значение из ячеек А2 и В2 соответственно. Назовем их per1 и per2
Итак:
let per1 = aktSheet.getRange("A2").getValue();
Дословно это можно интерпретировать так - из нужного листа aktSheet (а эта переменная у нас связана с Листом1) получить значения (getValue) из диапазона А2 (getRange) и присвоить их переменной per1
Для второй переменной получим
let per2 = aktSheet.getRange("B2").getValue();
Обратите внимание, что после каждой команды идет знак ";" (точка с запятой). Это очень важно, обратите на это внимание.
Далее мы должны произвести вычисления и соответственно присвоить их третьей переменной - per3
let per3 = per1+per2;
Теперь полученное значение per3 нам нужно отправить в ячейку С2
aktSheet.getRange("C2").setValue(per3);
Дословно: На рабочем листе (aktSheet - "Лист1"), для диапазона С2, присвоить значение per3 (setValue)
В итоге наша программа примет вид:
function myFunction() {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let aktSheet = ss.getSheetByName('Лист1');
let per1 = aktSheet.getRange("A2").getValue();
let per2 = aktSheet.getRange("B2").getValue();
let per3 = per1+per2;
aktSheet.getRange("C2").setValue(per3);
}
Теперь можно сохранить наши изменения и запустить выполнение функции
При первом запуске программы может "выскочить" предупреждение системы безопасности. Нужно разрешить выполнение программы
После этого можно проверять выполнение прораммы.
Поздравляю!!!
Сегодня вы создали свою первую программу в Гугл таблицах.
Подписывайтесь на канал, ставьте лайки и пишите комментарии.
Все остальные уроки по Гугл таблицам Вы можете посмотреть, посетив страницу с содержанием:
Без рекламы и только про Гугл таблицы можно почитать здесь: