Как найти макросы в гугл таблицах

Чтобы быстрее выполнять однотипные действия в Таблицах, вы можете использовать макросы.

Как создать макрос

  1. Откройте файл в Google Таблицах на компьютере.
  2. В верхней части страницы нажмите Расширения > Макросы > Записать макрос.
  3. В нижней части экрана выберите, какой тип ссылок должен использовать макрос.
    • Использовать абсолютные ссылки. Макрос будет выполнять действия только в той ячейке, для которой вы его записали. Например, если при записи макроса вы выделите содержимое ячейки A1 полужирным шрифтом, то он всегда будет применяться только к тексту в ячейке A1.
    • Использовать относительные ссылки. Макрос будет выполнять действия в выбранной вами ячейке, а также в соседних ячейках. Например, если при записи макроса вы выделите текст ячеек A1 и B1 полужирным шрифтом, то его также можно будет автоматически применять к ячейкам C1 и D1.
  4. Выполните все действия, которые хотите записать. Затем нажмите Сохранить.
  5. Введите название макроса, назначьте для него быстрые клавиши и нажмите Сохранить.
    • Примечание. При добавлении макроса в Google Таблицах автоматически создается скрипт Apps Script. Чтобы изменить скрипт, в верхней части экрана выберите Инструменты > Редактор скриптов.

Чтобы запустить макрос, нажмите Расширения > Макросы > выберите нужный вариант.

Как изменить макрос

Вы можете изменить название макроса, назначить для него быстрые клавиши, отредактировать скрипт или удалить макрос.

  1. Откройте файл в Google Таблицах на компьютере.
  2. В верхней части страницы нажмите Расширения > Макросы > Настроить макросы.
  3. Внесите изменения. Чтобы удалить макрос или отредактировать скрипт, нажмите на значок «Ещё» Ещё рядом с макросом. 
  4. Нажмите Обновить.

Как запланировать запуск макроса

Макрос может запускаться при определенных условиях (например, когда выполняется какое-то действие или обновляется календарь) или в установленное время, в том числе через заданные периоды.

  1. Откройте файл в Google Таблицах на компьютере.
  2. Нажмите Инструменты > Редактор скриптов.
  3. Выберите Изменить > Триггеры текущего проекта.
  4. В правом нижнем углу экрана нажмите Добавление триггера и выберите нужный вариант.
  5. Нажмите Сохранить.

Как импортировать персонализированные функции

Вы можете импортировать функции, созданные с помощью Google Apps Script.

  1. Откройте файл в Google Таблицах на компьютере.
  2. В верхней части страницы нажмите Расширения > Макросы > Импортировать.
  3. Рядом с нужным вариантом выберите Добавить функцию.

Эта информация оказалась полезной?

Как можно улучшить эту статью?

На чтение 11 мин. Просмотров 20.9k.

Макросы Google Sheets — это небольшие программы, которые вы создаете внутри Google Sheets без необходимости написания кода.

Они позволяют автоматизировать повторяющиеся задачи. Макросы работают, записывая ваши действия, когда вы что-то делаете. Вы сохраняете эти действия как «рецепт», чтобы повторить позже одним щелчком мыши.

По-моему, звучит неплохо.

Из этой статьи узнаете, как использовать макросы, увидите примеры, изучите их ограничения, а также посмотрите, как они отлично вписываются в удивительный мир кодирования скриптов приложений 😀

Содержание

  1. 1. Что такое макросы Google Sheets?
  2. 2. Зачем использовать макросы в Google Sheets?
  3. 3. Шаги для записи вашего первого макроса
  4. 4. Другие варианты
  5. 5. Заглянем под капот макроса Google Sheets
  6. 6. Примеры макросов Google Sheets
  7. Заключение

1. Что такое макросы Google Sheets?

Вспомните свой обычный рабочий день с открытыми Google Sheets. Наверняка, есть часть задач, которые вы выполняете неоднократно. Например, форматирование отчетов, чтобы они выглядели единообразно, или добавление того же графика к новым данным о продажах, или создание специальной формулы, уникальной для вашего бизнеса.

Все это отнимает ваше время, верно?

Вновь и вновь повторять одно и то же. Скучно, наверное. Все, что повторяется, является отличным претендентом на автоматизацию. Вот здесь и появляются макросы Google Sheets.

Как они работают:

  • Нажмите кнопку, чтобы начать запись макроса
  • Делайте свою работу
  • Нажмите кнопку, чтобы остановить запись макроса
  • Повторите процесс, когда вам нужно одним нажатием кнопки
  • Занимайтесь любимым делом все время, которое у вас освободилось

Они действительно так просты.

2. Зачем использовать макросы в Google Sheets?

Есть очевидная причина. Макросы в Google Sheets могут сэкономить вам кучу времени, позволяя вам сосредоточиться на более полезной деятельности. Но есть и менее очевидные причины: избегание ошибок, обеспечение согласованности в вашей работе, уменьшение скуки на работе (следствие: повышенная мотивация!) И, наконец, они являются отправной точкой в удивительный мир кодирования Apps Script.

3. Шаги для записи вашего первого макроса

Давайте пройдемся по процессу создания супер базового макроса, выполнив следующие шаги:

  • Откройте новый Google Sheet (вариант 1: введите sheet.new в браузере, чтобы мгновенно создать новый лист; вариант 2: в папке «Диск» нажмите Shift + s, чтобы мгновенно создать новый лист в этой папке. ). Введите несколько слов в ячейку A1.
  • Зайдите в меню макроса: Инструменты> Макросы> Запись макроса
Макрос меню Google Sheets
  • У вас есть выбор между Абсолютными или Относительными ссылками. Для этого первого примера давайте выберем относительные ссылки:

Макрос с относительной ссылкой

Абсолютные ссылки каждый раз применяют форматирование к одному и тому же диапазону ячеек (например, если вы выберете A1:D10, он всегда применяет макрос к этим ячейкам). Это полезно, если вы хотите каждый раз применять шаги к новому пакету данных, и каждый раз он находится в одном и том же месте диапазона.

Относительные ссылки применяют форматирование в зависимости от того, где находится ваш курсор (если вы записали свой макрос, примененный к ячейке A1, но затем повторно запустили макрос, когда вы выбрали ячейку D5, шаги макроса теперь будут применены к D5). Это полезно, например, если вы хотите применить формулу к различным ячейкам.

  • Примените некоторое форматирование к тексту в ячейке A1 (например, выделите его жирным шрифтом, увеличьте его, измените цвет и т.д.). Вы заметите, что регистратор макросов регистрирует каждый шаг:
Шаг макросов
  • Когда вы закончите, нажмите Сохранить и дайте вашему макросу имя:
Сохранить макрос

Вы также можете добавить клавишу быстрого доступа, чтобы в будущем можно было быстро запустить макрос.

Нажмите СОХРАНИТЬ еще раз, и Google Sheets запомнит ваш макрос.

  • Ваш макрос теперь доступен для использования через меню Инструменты > Макросы:
Выберите макрос в меню
  • При первом запуске макроса вам будет предложено предоставить ему разрешение на запуск. Это мера безопасности, обеспечивающая выполнение кода в фоновом режиме. Так как вы создали его, продолжать безопасно.

Сначала нажмите «Продолжить» во всплывающем окне «Авторизация»:

Макро авторизация

Затем выберите свой аккаунт Google:

Макрос выбрать учетную запись Google

Наконец, просмотрите разрешения и нажмите Разрешить:

Макро предоставьте разрешения

  • Затем макрос запускается и повторяет действия, которые вы записали, в новой выбранной ячейке!
Макрос выполнил форматирование

Поздравляем с первым макросом Google Sheets! Видите, это было легко!

Вот быстрый GIF, показывающий процесс записи макроса в полном объеме:

Запись макроса

И вот как это выглядит при запуске:

Полное руководство по автоматизации Google Sheets (макросы)

4. Другие варианты

4.1 Горячие клавиши

Это дополнительная функция при сохранении макроса в Google Sheets. Сочетание клавиш можно добавить позже через меню «Инструменты» > «Макросы» > «Настроить макросами».

Сочетания клавиш позволяют запускать макросы, нажимая определенную комбинацию клавиш, которую вы установили, что экономит ваше время, так как не нужно идти в меню.

Горячие клавиши

В приведенном выше примере я мог запустить макрос, нажав:

Ctrl + Alt + Shift + 1

4.2 Удаление макросов

Вы можете удалить макросы Google Sheets со своего листа через меню управления макросами: Инструменты > Макросы > Настроить макрос

Под списком ваших макросов найдите тот, который вы хотите удалить. Нажмите на три вертикальные точки справа от макроса и выберите «Удалить макрос»:

Удалить макрос

4.3 Импорт других макросов

Наконец, вы можете добавить любые функции, которые вы создали в файле скрипта Apps, в меню «Макрос», чтобы вы могли запускать их, не заходя в окно редактора скриптов. Это более продвинутый вариант для пользователей, которым удобнее писать код скрипта Apps.

функция импорта в макро-меню

Эта опция доступна только в том случае, если в вашем файле Apps Script есть функции, которых еще нет в меню макросов. В противном случае оно будет серым.

5. Заглянем под капот макроса Google Sheets

За кулисами макросы в Google Sheets преобразуют ваши действия в код Apps Script, который является всего лишь версией Javascript, запускаемой в Google Cloud.

Если вы хотите взглянуть на код, вы можете увидеть его, открыв редактор скриптов (Инструменты > Редактор скриптов или Инструменты > Макросы > Настроить макрос > Изменить скрипт).

Вы увидите файл скрипта приложения с кодом, подобным следующему:

/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getActiveRangeList().setFontWeight('bold')
  .setFontColor('#38761d')
  .setFontSize(12)
  .setFontFamily('Roboto');
  spreadsheet.getActiveSheet().setColumnWidth(1, 135);
  spreadsheet.getActiveRangeList().setHorizontalAlignment('center')
  .setBackground('#d9ead3');
};

По сути, этот код захватывает электронную таблицу, а затем захватывает активный диапазон ячеек, которые выбраны.

Затем макрос делает выделение жирным шрифтом (строка 5), зеленым (строка 6), размером шрифта 12 (строка 7) и, наконец, меняет семейство шрифтов на Roboto (строка 8).

Макросы в Google Sheets — это отличный первый шаг в мир скриптов приложений, поэтому я рекомендую вам открывать редакторы для различных макросов и смотреть, как они выглядят.

Если вам интересно, строка / ** @OnlyCurrentDoc * / гарантирует, что процедура авторизации запрашивает только доступ к текущему файлу, в котором находится ваш макрос.

6. Примеры макросов Google Sheets

6.1 Форматирование таблиц

Запишите шаги форматирования отчетов, чтобы можно было быстро применить те же шаги форматирования к другим таблицам. Вам нужно выбрать Относительные ссылки, чтобы вы могли применять форматирование, где бы ни находился диапазон таблицы (если вы использовали абсолютное значение, оно всегда будет применять форматирование к одному и тому же диапазону ячеек).

6.2 Создание диаграмм

Если вы снова и снова создаете один и тот же график, скажем, для новых наборов данных каждую неделю, то, возможно, пришло время автоматизировать процесс с помощью макроса. Запишите свои шаги при создании диаграммы в первый раз для дальнейшего использования.

Следующие макросы предназначены для копирования в редактор сценариев, а затем импорта в меню макросов и запуска оттуда.

6.3. Преобразовать все формулы в значения на текущем листе.

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// преобразовать все формулы в значения на активном листе
 function FormulasToValuesActiveSheet () {
   var sheet = SpreadsheetApp.getActiveSheet ();
   var range = sheet.getDataRange ();
   range.copyValuesToRange (sheet, 1, range.getLastColumn (), 1, range.getLastRow ());
 };

Вернувшись в Google Sheet, используйте параметр «Импортировать». Когда вы запустите его, он преобразует любые формулы в текущем листе в значения.

6.4 Преобразование всех формул в значения во всем Google Sheet

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// преобразовать все формулы в значения на каждом листе Google Sheet
 функция FormulasToValuesGlobal () {
   var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheets ();
   sheet.forEach (function (sheet) {
     var range = sheet.getDataRange ();
     range.copyValuesToRange (sheet, 1, range.getLastColumn (), 1, range.getLastRow ());
   });
 };

Вернувшись в Google Sheet, используйте параметр «Импортировать», для превращения кода в макрос. Когда вы запустите его, он преобразует все формулы на всех листах Google Sheet в значения.

6.5 Сортировка всех листов в Google Sheet по алфавиту

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// сортировать листы по алфавиту
 function sortSheets() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = spreadsheet.getSheets();
  var sheetNames = [];
  sheets.forEach(function(sheet,i) {
    sheetNames.push(sheet.getName());
  });
  sheetNames.sort().forEach(function(sheet,i) {
    spreadsheet.getSheetByName(sheet).activate();
    spreadsheet.moveActiveSheet(i + 1);
  });
};

Вернувшись в свой Google Sheet, используйте параметр «Импортировать». Когда вы запустите его, он отсортирует все ваши листы в алфавитном порядке.

6.6 Показать все строки и столбцы в текущем листе

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// показать все строки и столбцы в текущем диапазоне данных листа
 function unhideRowsColumnsActiveSheet() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  sheet.unhideRow(range);
  sheet.unhideColumn(range);
}

Используйте параметр «Импортировать». Когда вы запустите его, он покажет все скрытые строки и столбцы в диапазоне данных. (Если у вас есть скрытые строки / столбцы за пределами диапазона данных, они не будут затронуты.)

6.7 Показать все строки и столбцы во всем Google Sheet

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// показать все строки и столбцы в диапазонах
 function unhideRowsColumnsGlobal() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheets.forEach(function(sheet) {
    var range = sheet.getDataRange();
    sheet.unhideRow(range);
    sheet.unhideColumn(range);
  });
};

Вернувшись в свой Google Sheet, используйте параметр «Импортировать». Когда вы запустите макрос, он отобразит все скрытые строки и столбцы в диапазоне данных на каждом листе всего вашего документа.

6.8 Установите для всех листов определенный цвет вкладки

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// установить все вкладки Sheets на красный
 function setTabColor () {
   var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheets ();
   sheet.forEach (function (sheet) {
     sheet.setTabColor ( "FF0000");
   });
 };

Далее используйте параметр «Импортировать». Когда вы запустите макрос, он установит цвет всех вкладок, как красный.

Хотите другой цвет? Просто измените шестнадцатеричный код в строке 5 на какой хотите, например, васильковый будет 6495ed.

Используйте это удобное руководство, чтобы найти нужные вам шестнадцатеричные значения.

6.9 Удалите все цвета вкладок со всех листов

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// удаляем все цвета вкладок Sheets
 function resetTabColor () {
   var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheets ();
   sheet.forEach (function (sheet) {
     sheet.setTabColor (null);
   });
 };

Затем используйте параметр «Импортировать». Когда вы запустите макрос, он удалит все цвета вкладок из вашего листа.

Ниже GIF показывает работу макросов, которые добавляют и удаляют цвета вкладок:

цветные вкладки с макросами

6.10 Скрыть все листы кроме активного

Скопируйте и вставьте этот код в редактор сценариев и импортируйте функцию в меню «Макрос»:

function hideAllSheetsExceptActive() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheets.forEach(function(sheet) {
    if (sheet.getName() != SpreadsheetApp.getActiveSheet().getName()) 
      sheet.hideSheet();
  });
};

Запуск этого макроса скроет все листы, кроме того, который вы выбрали (активный лист).

6.11 Покажите все скрытые листы за один клик

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

function unhideAllSheets () {
   var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheets ();
   sheet.forEach (function (sheet) {
     sheet.showSheet ();
   });
 };

Используйте параметр «Импортировать». Когда вы запустите макрос, он покажет все скрытые листы, что избавит вас от необходимости делать это один за одним.

Вот GIF, показывающий, как работают макросы скрытия и отображения:

Полное руководство по автоматизации Google Sheets (макросы)

Лист3 (активный) — единственный, который не скрыт при запуске первого макроса.

6.12 Сброс фильтров

Это один из моих любимых макросов! 🙂

Я все время использую фильтры в своих таблицах данных, и меня слегка раздражает, что невозможно очистить все фильтры за один раз. Вы должны вручную сбросить каждый фильтр (это занимает много времени, а иногда трудно увидеть, какие столбцы имеют фильтры, когда у вас действительно большие наборы данных) ИЛИ вы можете полностью удалить фильтр и повторно добавить его из меню.

Давайте создадим макрос в Google Sheets для этого! Тогда мы сможем стать эффективнее, запустив его одним щелчком мыши или, что еще лучше, с помощью сочетания клавиш.

Откройте редактор скриптов (Инструменты > Редактор скриптов). Скопируйте и вставьте следующий код в новую строку:

// сброс всех фильтров для диапазона данных на текущем листе
function resetFilter() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  range.getFilter().remove();
  range.createFilter();
}

Вернувшись обратно, используйте параметр «Импортировать. Когда вы запустите макрос, он удалит, а затем повторно добавит фильтры в ваш диапазон данных.

Вот GIF-файл, показывающий проблему и ее решение с помощью макроса:

Полное руководство по автоматизации Google Sheets (макросы)

Заключение

Я надеюсь, что приведенные выше простые шаги и примеры вдохновляют вас использовать макросы в своей работе с Google Sheets.

Не забудьте поделиться своими мнениями со мной в разделе комментариев. И, пожалуйста, не забудьте поделиться этой информацией со своими друзьями, я уверен, что они это оценят.

Макрос – небольшая программа, выполняющая действия, заранее записанные пользователем. Google Таблицы поддерживают создание таких программ, что значительно упрощает рутинные действия, с которыми приходится сталкиваться каждый день. Я покажу, как можно записать макрос и запускать его выполнение при помощи графической кнопки, расположенной прямо в таблице.

Пример задачи для макроса

Сначала предлагаю вкратце остановиться на том, что именно будет делать макрос, который я взял в качестве примера для данной статьи. Его задача – перенести записанные данные из одного листа таблицы на другой, формируя тем самым базу данных в автоматическом режиме. Это упростит процесс заполнения информации и избавит юзера от необходимости следить за строками. Разберу все составляющие таблицы для реализации поставленной цели.

  1. У меня есть небольшая форма для заполнения с номерами товаров, их названием, серийным номером, датой.Проверка содержимого листа перед созданием макроса в Google Таблицах

  2. На следующем изображении вы видите простую формулу для счета номера каждого товара, чтобы не вводить его каждый раз. Ссылка в функции ведет на лист с базой данных.Первая функция в таблице перед созданием макроса в Google Таблицах

  3. Дата тоже проставляется автоматически.Вторая функция в таблице перед созданием макроса в Google Таблицах

  4. Вручную будут заполняться только названия для товаров и их серийные номера, после чего все это переносится на лист базы данных.Пример переноса данных перед созданием макроса в Google Таблицах

  5. На этом листе вся таблица повторяется по структуре, но пока она пустая, поскольку все будет переноситься автоматически при помощи макроса, о котором пойдет речь далее.Пустой лист для базы данных перед созданием макроса в Google Таблицах

У вас может быть совершенно другая таблица со своими задачами, которые вы выполняете постоянно, но хотите оптимизировать при помощи макроса. При помощи инструкции ниже вы разберетесь с тем, как организовать такую программу, если ранее не сталкивались с подобной задачей.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Запись макроса в Google Таблицах

Макрос в Гугл Таблицах запоминает выполненные пользователем действия, а затем повторяет их каждый раз при повторном запуске. Это и позволит нам осуществить что-либо всего один раз, а затем доверить реализацию небольшой программе. Кстати, таких макросов можно записать практически неограниченное количество.

  1. Для начала я заполню динамические данные в своей таблице. Сделайте это и вы, если в этом возникнет необходимость.Динамически заполняемые данные перед созданием макроса в Google Таблицах

  2. После этого откройте меню «Расширения», наведите курсор на пункт «Макросы» и нажмите кнопку «Записать макрос».Вызов инструмента через меню для создания макроса в Google Таблицах

  3. Появится окно записи, значит, вы можете приступать к выполнению рутинных действий. Учитывайте, что макрос записывает абсолютно все изменения, поэтому старайтесь не делать лишних нажатий и редактирований ячеек.Панель с уведомлениями для создания макроса в Google Таблицах

  4. Я скопировал всю строку для переноса в базу данных и использую специальную вставку «Только значения», чтобы избежать вставки функций, которые тут не нужны.Выполнение действия для создания макроса в Google Таблицах

  5. Далее удаляю динамические значения, чтобы форма была готова для заполнения другими товарами.Выполнение второго действия для создания макроса в Google Таблицах

  6. В завершение на листе, куда была перенесена строка, создаю новую строку выше, чтобы обеспечить место для дальнейшего копирования.Выполнение третьего действия для создания макроса в Google Таблицах

  7. Остается только нажать на «Сохранить», завершая тем самым запись макроса. Если вы не уверены, что все сделали правильно, щелкните на «Отмена», снова запустите запись и повторите действия.Сохранение результата для создания макроса в Google Таблицах

  8. Задайте для макроса любое название на английском языке. Быстрые клавиши можно не задавать, поскольку далее разберемся с тем, как запускать скрипт при помощи графической кнопки.Добавление названия для создания макроса в Google Таблицах

  9. Проверьте макрос через то же самое меню «Макросы», отыскав его по названию.Поиск макроса через меню после его создания Google Таблицах

  10. Если результат вас устраивает, переходите к следующему шагу. В противном случае удалите текущую программу и создайте новую.Проверка выполнения макроса после его создания в Google Таблицах

Назначение кнопки для запуска макроса

Как вы уже увидели выше, для запуска макроса приходится искать его через меню или запоминать горячую клавишу. Куда проще создать графическую кнопку, одно нажатие по которой быстро запустит выполнение программы. Благо в Google Таблицах это реализуемо при помощи вставки простого рисунка, что осуществляется так:

  1. Разверните меню «Вставка» и нажмите по пункту «Рисунок».Использование вставки рисунка для назначения кнопки макроса Google Таблицах

  2. Создайте любой рисунок или вставьте геометрическую фигуру, выбрав для нее подходящий размер. Можно даже использовать любой текст.Создание рисунка для назначения кнопки макроса Google Таблицах

  3. Расположите рисунок на листе, щелкните по трем точкам справа от него и выберите «Назначить скрипт».Переход к добавлению скрипта для рисунка в Google Таблицах

  4. В качестве скрипта укажите точное название макроса, который создали ранее.Добавление скрипта для рисунка в Google Таблицах

  5. Теперь кликните по картинке ЛКМ и убедитесь в том, что скрипт был успешно выполнен (на экране появится соответствующее уведомление).Нажатие по рисунку для запуска макроса в Google Таблицах

К сожалению, я не могу рассказать обо всех возможных вариациях макросов, поскольку все зависит исключительно от того, какие действия хочет выполнить пользователь. Я показал лишь пример записи программы и рассмотрел интересную функцию с его запуском через графическую кнопку. Вам остается лишь понять, какие рутинные задачи вы желаете автоматизировать, и сделать это при помощи макросов в Гугл Таблицах.

Уровень сложности: Начинающий

Последнее обновление: 2021-01-22

Apps Script — это платформа для быстрой разработки приложений, которая дает вам возможность автоматизировать, настраивать и расширять возможности Google Workspace. С помощью Apps Script вы можете автоматизировать и упростить обременительную или сложную работу в Google Workspace, сэкономив вам и вашей команде время и силы.

Возможности Apps Script включают следующее:

  • Встроенные службы Apps Script позволяют читать, обновлять и управлять данными приложения Google Workspace с помощью сценариев.
  • Вы можете создавать сценарии с помощью встроенного в браузер редактора кода Apps Script — нет необходимости устанавливать или запускать программное обеспечение для разработки кода.
  • Вы можете создавать пользовательские интерфейсы для некоторых приложений Google Workspace, которые позволяют активировать скрипты непосредственно из этих редакторов с помощью пунктов меню, диалогов и боковых панелей.
  • … и многое другое.

Сборник лаб «Основы Apps Script в Google Таблицах» учит основам Apps Script и тому, как использовать эти сервисы для улучшения работы с Google Таблицами. Эта лаба посвящена обучению основам Apps Script.

Сервис Spreadsheet Service

Вы можете использовать Apps Script для расширения функционала Google Таблиц, чтобы сэкономить время и силы. Apps Script предоставляет службу Spreadsheet Service, которая позволяет скриптам взаимодействовать с вашими файлами Google Sheets и данными, которые они содержат. Вы можете использовать эту службу для автоматизации следующих общих задач с электронными таблицами:

  • Создавать или изменять электронные таблицы.
  • Читать и обновлять данных ячеек, формул и форматирования.
  • Создавать собственные кнопки и меню.
  • Импортировать и экспортировать данные из других приложений Google или сторонних источников.
  • Регулировать совместное использование и изменять контроль доступа к таблицам
  • … и многое другое.

Что вы узнаете из этого сборника

Этот сборник лаб охватывает все темы, которые вам понадобятся, чтобы начать использовать Apps Script с Google Sheets:

  • Макросы и пользовательские функции
  • Работа с книгами, листами и диапазонами
  • Работа с данными
  • Форматирование данных
  • Диаграммы и представление данных на слайдах

Этот сборник предназначен для чтения и освоения по порядку, поэтому начните с этой лабы и проходите их последовательно для наилучшего обучения.

Перейдите к следующему разделу, чтобы узнать больше о текущей теме.

Добро пожаловать в первую лабу этого сборника! Тут вы узнаете основы использования Apps Script с Google Таблицами. В частности, эта лаба фокусируется на двух ключевых концепциях: макросах и пользовательских функциях.

Макрос — это серия записанных действий в Google Таблицах. После записи вы можете активировать макрос, чтобы повторить эти действия позже с помощью элемента меню или сочетания клавиш. Вы можете создавать и обновлять собственные макросы как в Google Таблицах, так и в редакторе кода Apps Script.

В редакторе кода Apps Script вы также можете создавать собственные функции. Подобно встроенным функциям, которые предлагают Таблицы (например, SUM или AVERAGE), вы можете использовать Google Apps Script для написания собственных пользовательских функций для простых и нишевых операций (таких как преобразования или конкатенация строк). После создания вы можете вызывать эти функции в Таблицах, как встроенную функцию. Пользовательские функции также можно использовать в формулах ячеек, которые вы пишете, комбинируя их с другими функциями по мере необходимости.

Ниже показано, какие концепции и требования включает в себя эта лаба.

Что вы изучите

  • Как создать скрипт для Google Таблиц.
  • Как пользоваться редактором Apps Script.
  • Как создавать и обновлять макросы.
  • Как создать свою первую пользовательскую функцию для Таблиц.

Что вам потребуется

  • Базовое знакомство с JavaScript
  • Базовое знакомство с Google Таблицами
  • Умение читать А1-нотацию табличных процессоров

Вы закончили знакомство. Перейдите в следующий раздел, чтобы начать работу с макросами!

Как правило, работая с электронными таблицами, вы можете войти в цикл повторяющихся действий — копирование значений ячеек, форматирование, создание формул и т.д. — которые могут стать утомительными и привести к ошибкам. Чтобы дать вам возможность автоматизировать повторяющиеся действия, в Google Таблицах есть макросы. Макросы позволяют «записывать» серию действий в Таблице. С записанным макросом вы можете повторить эту серию действий в другом месте этой же таблицы простым нажатием горячей клавиши.

В этом разделе вы узнаете, как создать макрос в Таблицах. В следующем разделе вы увидите, как создаются макросы с помощью редактора скриптов.

Прежде чем вы начнете

Прежде чем продолжить, вам понадобится электронная таблица с некоторыми данными. Мы уже подготовили одну: щелкните кнопку ниже, чтобы скопировать Таблицу данных, а затем, перейдя по ссылке, щелкните кнопку «Создать копию».

Скопировать Таблицу данных

Копия примера Таблицы, которую вы можете использовать, будет размещена в папке Google Диска и называться «Копия Топ-10 самых кассовых фильмов (2020)».

Создание макроса

Теперь, когда у вас есть ваша Таблица, вы можете записать макрос. В этом примере вы создадите макрос, который форматирует строку заголовка данных. Просто выполните следующие действия:

  1. Щелкните ячейку A1, чтобы навести курсор на эту строку. Это ваша строка заголовка.
  2. В меню выберите Меню > Инструменты > Макросы > Записать макрос.

Как только вы начнете запись, Google Таблица начнет запоминать действия, которые вы выполняете: выделение ячеек, добавление данных, переключение на разные листы, форматирование и т.д. Эти действия позже становятся «сценарием», который повторяется после сохранения и активации макроса.

  1. В окне записи макроса («макрос-бокс») выберите «Использовать относительные ссылки«.

  1. Выберите строку 1.

  1. Измените цвет заливки выделенной строки с белого на темно-пурпурный (3).

  1. Измените цвет текста выделенной строки с черного на белый.

  1. Сделайте текст жирным шрифтом, нажав [Ctrl]+[B] (или [Cmd]+[B] на Mac).
  2. Выберите Меню > Вид > Закрепить > 1 строку, чтобы зафиксировать верхнюю строку.

  1. Нажмите кнопку «Сохранить» в окне записи макроса внизу экрана. Затем в новом диалоговом окне вас попросят назвать макрос; дайте ему имя «Заголовок» и нажмите «Сохранить«.

Используя пользовательский интерфейс Таблиц, вы создали макрос, специально предназначенный для форматирования заголовков!

Активация вашего макроса

Вы создали макрос в Таблицах! Вы можете попробовать применить его, выполнив следующие действия:

  1. Щелкните слева от вкладок листов или Меню > Вставка > Новый лист, чтобы создать новый лист.
  2. На новом листе добавьте какой-нибудь текст в A1:C2. Не стесняйтесь следовать приведенным ниже примерам:

  1. Выделите первую строку.

  1. Выберите Меню > Инструменты > Макросы > Заголовок, чтобы применить макрос к выбранной области.

  1. Авторизуйте макрос, следуя инструкциям на экране.
  1. Повторите шаг 4, чтобы снова запустить макрос (авторизация останавливает первое выполнение).

Вы узнали, как применять макросы в Таблицах. Поздравляю! Ваша таблица должна выглядеть так:

Макросы позволяют эффективно создавать электронные таблицы, и в следующей части этой лабы вы узнаете, как сделать ваши макросы еще более мощными! Секрет в том, что когда вы записываете макрос, на самом деле вы пишете код Apps Script. За кулисами Таблицы создают код, который соответствует макрокомандам за вас. А в следующем разделе вы узнаете, как изменить этот код напрямую с помощью редактора Apps Script в браузере.

Когда вы создаете макрос, Google Таблицы сохраняют ваши действия как функцию. Когда вы активируете макрос, Google Sheets вызывает функцию Apps Script, чтобы выполнить те же действия в том же порядке.

Взгляд на редактор

Теперь, когда вы создали макрос, вы можете посмотреть его код. Вы можете просмотреть свой макрос-скрипт, выбрав Меню > Инструменты > Редактор скриптов, чтобы открыть редактор кода в браузере для Apps Script.

Понимание Макросы.gs

Посмотрите текущий сценарий. Таблицы создали файл скриптов Макросы.gs, когда вы записали макрос «Заголовок«, заполнив его соответствующей функцией сценария приложений под названием «Заголовок«. Когда вы активируете макрос, Таблицы запускают эту функцию.

Посмотрите на изображение ниже, чтобы познакомиться со структурой вашей макрос-функции в Apps Script. Ваш код может выглядеть немного иначе, если вы записали шаги в другом порядке или щелкнули на поле Таблице во время записи.

Первая строка — это аннотационный комментарий, влияющий на авторизацию:

/** @OnlyCurrentDoc */

Большинство скриптов перед запуском запрашивают у пользователя некоторый набор разрешений. Эти разрешения определяют, что пользователь разрешает делать сценарию. Если в проекте сценария присутствует комментарий @OnlyCurrentDoc, Apps Script запрашивает только разрешение на доступ и обновление текущей Таблицы. Без этого комментария Apps Script будет запрашивать разрешение на доступ и обновление всех Таблиц пользователя. Всегда полезно включать эту аннотацию, если вы планируете работать только с одним файлом Таблиц (Документов, Слайдов). Инструмент записи макросов автоматически добавляет этот комментарий.

Чтобы начать понимать, как Apps Script представляет инструкции вашего макроса, вы можете взглянуть на функцию:

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(spreadsheet.getCurrentCell().getRow(), 1, 1, sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};

Этот код запускается, когда вы активируете макрос «Заголовок«. После function отметка myFunction() определяет имя функции и ее параметры. Помните, что myFunction() не требует параметров, поскольку макрос-функции в Apps Script вызываются напрямую. В фигурных скобках всегда заключено тело функции Apps Script.

Следующие лабы из этого сборника объясняют классы и концепции, участвующие в создании макроса. Но пока вы можете посмотреть описания кода ниже, чтобы получить общее представление о его компонентах и ​​их роли в создании программы. Рассмотрим первую строку:

var spreadsheet = SpreadsheetApp.getActive();

Здесь getActive() возвращает объект, представляющий текущий активный файл Таблицы, и устанавливает его в новую переменную spreadsheet.

var sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow(), 1, 1, sheet.getMaxColumns()).activate();

Этот код соответствует щелчку по первой строке Таблицы, чтобы выделить ее. Это называется активацией. Сначала код сохраняет текущий лист в переменной sheet, а потом получает всю первую строку с помощью метода getRange(), далее вызывает activate() для ее активации. Первая строка Таблицы указывается с использованием конкретных номеров строки и столбца. Вызов spreadsheet.getCurrentCell().getRow() возвращает номер текущей строки, а sheet.getMaxColumns() возвращает максимальное количество столбцов на листе.

spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');

Этот фрагмент кода становится более сложным. Чтобы эффективно вызывать методы с помощью переменной spreadsheet, код объединяется в три метода после getActiveRangeList(), чтобы предотвратить избыточный вызов getActiveRangeList(). По мере того, как вы все больше и больше будете писать код с помощью Apps Script, вы сможете лучше познакомиться с этим соглашением о вызове нескольких методов в одном классе (также известном как цепь вызовов). На данный момент достаточно прочитать следующие краткие объяснения каждого метода в этом блоке:

  • getActiveRangeList() возвращает список диапазонов RangeList, которые выделены в spreadsheet в текущий момент. В этом случае это просто первая строка, которую активировал наш код.
  • Оба метода setBackground(color) и setFontColor(color) изменяют атрибуты цвета ячеек в диапазоне.
  • setFontWeight(fontWeight) регулирует толщину шрифта для ячеек в диапазоне.

Наконец, последняя строка «замораживает» первую строку макроса:

spreadsheet.getActiveSheet().setFrozenRows(1);

И это сценарий, созданный вами при записи макроса! Не беспокойтесь о незнакомых терминах или методах, упомянутых выше. Описание предназначено для того, чтобы вы задумались о некоторых идеях, на которых Apps Script фокусируется в типичной функции макросов, и о том, какие темы будут рассматривать будущие лабы.

Следующий раздел посвящен управлению кодом myFunction(), чтобы показать, как можно использовать редактор сценариев для дальнейшей персонализации макросов.

Настройка макросов с помощью Apps Script

В редакторе скриптов отображается макрос, созданный вами ранее в Google Таблицах. Регулируя содержимого тела функции, вы можете настроить инструкции вашего макроса для выполнения различных или дополнительных действий. Следующие упражнения демонстрируют различные способы управления макросами с помощью редактора скриптов.

Изменение ячеек, на которые будет распространено воздействие

  1. В редакторе скриптов замените sheet.getMaxColumns() на 11 в строке 6. Это изменение изменяет диапазон ячеек в Таблице, на которые влияет макрос.
/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(spreadsheet.getCurrentCell().getRow(), 1, 1, 11).activate(); /* sheet.getMaxColumns() заменено на 11 */
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
    .setFontColor('#ffffff')
    .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};
  1. Чтобы сохранить сценарий, в верхней части редактора щелкните «Сохранить проект» .
  2. Чтобы переименовать свой проект, вверху нажмите на заголовок «Проект без названия» (или «Записанные макросы (Копия Топ-10 самых кассовых фильмов (2020))», зависит от порядка записи макроса), введите «Макросы и пользовательские функции» в качестве имени нового проекта и выберите «Переименовать».
  3. В Таблице щелкните слева от вкладок листов или Меню > Вставка > Новый лист, чтобы создать новый лист.
  4. В редакторе сценариев в раскрывающемся списке функций выберите myFunction() и щелкните «Выполнить» .

На новом листе вы должны увидеть следующий результат:

Теперь, изменяя активный или целевой диапазон, ваш макрос влияет только на часть первой строки! Многие методы Apps Script принимают диапазон строку в А1-нотации в качестве параметра, чтобы указать, с какими ячейками следует оперировать.

Пришло время узнать о настройке цветов!

Изменение цветов в коде макроса

Чтобы помочь вам разработать цветовую схему макроса или для других элементов в Таблице, Apps Script может произвести заливку диапазона или изменить цвет текста. Выполните следующие инструкции, чтобы узнать, как настроить цвета.

Эти первые несколько шагов касаются изменения цвета фона, который назначает макрос:

  1. В Таблице вернитесь к исходному листу (Лист1), содержащему данные.
  2. Щелкните первую строку, чтобы выделить ее.
  3. В редакторе сценариев замените #4c1130 на #afeeee в строке 6. Эти значения представляют разные цвета с использованием шестнадцатеричной нотации.
/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(spreadsheet.getCurrentCell().getRow(), 1, 1, 11).activate(); /* sheet.getMaxColumns() заменено на 11 */
  spreadsheet.getActiveRangeList().setBackground('#afeeee') /* #4c1130 заменено на #afeeee */
    .setFontColor('#ffffff')
    .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};
  1. В Таблице щелкните слева от вкладок листов или Меню > Вставка > Новый лист, чтобы создать новый лист.
  2. В редакторе сценариев в раскрывающемся списке функций выберите myFunction() и щелкните «Выполнить» .

В Таблице фоновая заливка первых 11 столбцов в первой строке будут перекрашены в индивидуальный бирюзовый цвет, как показано здесь:

Переключив шестнадцатеричное значение цвета в параметрах setBackground(color) с #4c1130 (темно-пурпурный 3) на #afeeee (бледно-бирюзовый, параметр недоступный в меню цветов Таблиц по умолчанию), вы изменяете атрибут цвета фона для вашего макроса.

Вы настроили цвет фона, установленный вашим макросом. Предположим, теперь вы хотите изменить цвет текста, чтобы сделать заголовки более заметными. Вы можете сделать это, редактируя второй цветовой код:

  1. В Таблицах щелкните первую строку, чтобы убедиться, что она все еще выделена.
  2. В редакторе сценариев замените #ffffff на #191970 в строке 8. Это заставит макрос установить цвет шрифта в темно-синий.
/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(spreadsheet.getCurrentCell().getRow(), 1, 1, 11).activate(); /* sheet.getMaxColumns() заменено на 11 */
  spreadsheet.getActiveRangeList().setBackground('#afeeee') /* #4c1130 заменено на #afeeee */
    .setFontColor('#191970') /* #ffffff заменено на #191970 */
    .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};
  1. В Таблице щелкните слева от вкладок листов или Меню > Вставка > Новый лист, чтобы создать новый лист.
  2. В редакторе сценариев в раскрывающемся списке функций выберите myFunction() и щелкните «Выполнить» .

Вернитесь в Таблицу. Обратите внимание, что цвет текста в строке заголовка теперь темно-синий!

Теперь вы увидели, что макросы на самом деле являются действиями в Таблицах, записанными в виде кода Apps Script. В следующем разделе вы увидите еще одну возможность, которой Apps Script может помочь вам в работе с Google Таблицами: пользовательские функции.

Как и большинство приложений для работы с электронными таблицами, Google Таблицы имеют ряд встроенных формул, таких как =СУММ(), которые позволяют выполнять быстрые вычисления с данными таблицы. Пользовательские функции — это просто функции, которые вы определяете сами с помощью Apps Script. После того как вы определили пользовательскую функцию, вы можете использовать ее в любом месте вашей таблицы, как встроенную формулу.

В этом разделе показано, как создать пользовательскую функцию в Apps Script, которая выполняет валютную конвертацию.

Создание нового файла сценария

Используя ту же таблицу и проект скриптов, что и в разделе выше с макросами, вы можете следовать инструкциям ниже, чтобы узнать, как создать новый сценарий (который в конечном итоге можно использовать для создания своей первой настраиваемой функции!):

  1. Чтобы создать новый файл Apps Script в текущем проекте, в левой части редактора рядом с полем «Файлы» нажмите «Добавить файл» > Скрипт.
  2. Назовите новый файл сценария «Пользовательские функции» (Apps Script автоматически добавляет расширение «.gs» к имени).

В редакторе появится новая вкладка с именем «Пользовательские функции.gs«.

Теперь, когда вы создали сценарий специально для пользовательских функций, вы можете заполнить его кодом.

Перевод долларов США в российские рубли

Предположим, вы хотите скорректировать данные для «Топ-10 самых кассовых фильмов (2020)», чтобы они отображали не только значения в долларах, но также и в рублях. С пользовательскими функциями это легко сделать. В следующем упражнении показано, как создать пользовательскую функцию для математического преобразования ваших долларовых значений в значения в рублях.

Прежде чем вы сможете написать свою первую настраиваемую функцию, настройте набор данных, чтобы функция демонстрировала правильный результат. Сделайте следующее:

  1. В Таблице щелкните правой кнопкой мыши на столбец I.
  2. В появившемся меню нажмите Вставить справа: 1.

  1. Добавьте текст «Мировой прокат, рубли» в ячейку J1.

Теперь у вас есть столбец, в котором можно хранить результаты пользовательской функции конвертирования. Теперь можно использовать редактор сценариев для создания вашей первой пользовательской функции!

  1. В Пользовательские функции.gs замените код пустой функции myFunction() на следующий:
/**
 * Конвертирует доллары в рубли.
 *
 * @param {number} dollars Значение суммы в долларах.
 * @return {number} rubles Конвертированное значение в рублях.
 * @customfunction
 */
function USDTORUB(dollars){
  var rubles = dollars * 75.0; 
  return rubles;
}

Это код, который конвертирует доллары в рубли. Ниже идет инструкция, как запустить пользовательскую функцию в вашей Таблице.

  1. Чтобы сохранить сценарий, в верхней части редактора щелкните «Сохранить проект» .
  2. На листе с данными выберите ячейку J2.
  3. В поле функций введите =USDTORUB(I2)

Чтобы применить формулу к остальным ячейкам столбца:

  1. Переместите курсор в нижний правый угол ячейки J2 и выберите маленькую синий квадратик (ваш курсор должен трансформироваться в при наведении на синий квадратик в ).
  2. Щелкните и перетащите синий прямоугольник вниз, чтобы выделить J3:J11.

В столбце J теперь указана конвертированная стоимость в рублях!

Поздравляем, вы создали свою первую пользовательскую функцию. Далее рассмотрим код, из которого состоит USDTORUB().

Анализ функции USDTORUB()

В начале кода вы можете распознать комментарии, подробно описывающие назначение этой части программы:

/**
 * Конвертирует доллары в рубли.
 *
 * @param {number} dollars Значение суммы в долларах.
 * @return {number} rubles Конвертированное значение в рублях.
 * @customfunction
 */

Подобные блоки комментариев часто используются в программировании, чтобы объяснить, что делают функции.

В этом комментарии вы можете выделить две части: описание функции (сообщение о преобразовании) и аннотации, описывающие параметры функции и тип возвращаемого значения.

Apps Script использует JSDoc для аннотаций, чтобы помочь вам документировать и создавать подсказки автозаполнения для вашего кода. Вы можете прочитать ниже, как каждая аннотация, используемая в USDTORUB(), помогает в разработке Apps Script:

  • @param: вы можете использовать аннотацию @param для описания каждого параметра, передаваемого в функцию.
  • @return: вы можете использовать аннотацию @return, чтобы описать, что возвращает функция.
  • @customfunction: вы всегда должны добавлять @customfunction в комментарий к пользовательской функции. Эта аннотация уведомляет Таблицу о возможности автозаполнения вашей пользовательской функции, так же как Таблицы автоматически заполняют встроенные формулы, когда вы вводите их имена в ячейку, как показано ниже:

Обратите внимание, что текст, который появляется во всплывающем окне автозаполнения, точно соответствует тексту описания, который вы поместили в блок комментариев. Вы можете упростить дальнейшее использование пользовательских функций, убедившись, что создаваемые вами описания хорошо написаны и полны.

Далее сфокусируемся на коде функции USDTORUB():

function USDTORUB(dollars){
  var rubles = dollars * 75.0; 
  return rubles;
}

Как упоминалось ранее, USDTORUB() принимает числовую переменную в долларах и возвращает это значение, преобразованное в рубли в числовой переменной rubles, умножая его на фиксированный обменный курс. Входной параметр — это значение, содержащееся в ячейке, которую вы указали при добавлении пользовательской функции в ячейку. В этом примере входные суммы в долларах поступают из столбца I. Выходное значение rubles помещается в ячейку функции (то есть в столбец J в этом примере).

Пользовательские функции могут работать с числовыми или строковыми значениями. Это будет показано далее.

Объединение строкового суффикса

Предположим, вы хотите, чтобы числовой вывод функции USDTORUB() включал суффикс рублей «руб.«. Вы можете сделать это с помощью Apps Script, используя оператор конкатенации «+«, как показано в следующем примере:

  1. В редакторе измените return rubles; в строке 10 на return rubles + ' руб.';.

Оператор + добавляет строку » руб.» в конец значения, содержащегося в rubles. Теперь ваш код должен выглядеть так:

/**
 * Конвертирует доллары в рубли.
 *
 * @param {number} dollars Значение суммы в долларах.
 * @return {number} rubles Конвертирует переданное значение в рубли.
 * @customfunction
 */
function USDTORUB(dollars) {
  var rubles = dollars * 75.0;
  return rubles + ' руб.';
}
  1. Чтобы сохранить сценарий, в верхней части редактора щелкните «Сохранить проект» .

Значения в рублях теперь отображаются в колонке J:

Вы обновили свою пользовательскую функцию, которая теперь не только конвертирует доллары в рубли, но и добавляет строковый суффикс к выводимому значению.

Дополнительно: получение внешних данных

Это хорошее начало для базовой пользовательской функции, но в этом примере предполагается, что курс обмена доллара на рубли постоянен. Предположим, вместо этого вы хотите, чтобы всегда использовался текущий обменный курс, чтобы каждый раз при перезагрузке Таблицы значения пересчитывались для представления текущего преобразования. Для этого вам понадобятся средства определения текущего обменного курса. Это не та информация, которая доступна в Google Таблицах, но, к счастью, вы можете использовать Apps Script, чтобы получить ее!

Вы можете использовать приведенный ниже код, чтобы получить текущий курс конвертации рублей в доллары:

/**
 * Конвертирует доллары в рубли.
 *
 * @param {number} dollars Значение суммы в долларах.
 * @return {number} rubles Конвертирует переданное значение в рубли.
 * @customfunction
 */
function USDTORUB(dollars) {
  // Получает кэш, общий для всех пользователей скрипта.
  var cache = CacheService.getScriptCache();

  // Доступ к ячейке памяти (rate.RUB) кеша скриптов.
  var rate = cache.get("rates.RUB");

  // Если кэш отсутствует,
  // программа получает текущее значение RUB из API
  // и сохраняет его в кеше для дальнейшего использования.
  if (!rate) {
    var response = UrlFetchApp.fetch(
      "https://api.exchangeratesapi.io/latest?base=USD"
    );
    var result = JSON.parse(response.getContentText());
    rate = result.rates.RUB;
    cache.put("rates.RUB", rate);
  }
  // Конвертирует доллары в рубли по последнему курсу.
  var rubles = dollars * rate;
  // Возвращает значение в рублях с суффиксом.
  return rubles + " руб.";
}

Этот код получает текущий обменный курс с сервера финансовой информации с помощью стороннего API обменного курса. Это делается с помощью служб Apps Script, таких как UrlFetchApp и CacheService. Эти расширенные концепции выходят за рамки этой конкретной лабы, но вы можете начать видеть универсальность Apps Script, автоматизирующего более сложные и более реальные задачи в Google Таблицах.

Рекомендации по пользовательским функциям

Поздравляем с выполнением упражнений по пользовательским функциям. При использовании пользовательских функций в своих проектах важно понимать, что у них есть определенные ограничения. В следующем списке перечислены ограничения, подробно описанные в руководстве по пользовательским функциям к Google Таблицам:

  • Не создавайте пользовательские функции, требующие авторизации пользователя. Создавайте функции для выполнения простых задач, таких как расчет выборки данных, преобразование текста и т.д. См. использование служб Apps Script.
  • Не называйте пользовательскую функцию именами встроенных формул, и не завершайте имя знаком подчеркивания. См. рекомендации по именованию.
  • Не передавайте переменные (тиковые) аргументы пользовательским функциям. В качестве аргументов пользовательским функциям можно передавать только детерминированные (фиксированные) значения. Передача переменных аргументов, таких как результат =RAND() или =NOW(), нарушит работу пользовательской функции. См. руководство по аргументам.
  • Не создавайте функции, выполнение которых занимает более 30 секунд. Если это займет больше времени, произойдет ошибка, поэтому код функции должен быть простым и ограниченным по объему. Лучше всего, чтобы вычисления, проводимые в пользовательских функциях, были как можно проще. См. рекомендации по возвращаемым значениям.

Теперь у вас есть возможность улучшить свои Таблицы, используя редактор сценариев для работы с макросами и для создания пользовательских функций! В следующем и последнем разделе вы можете просмотреть, что вы узнали, и что вы можете сделать дальше, чтобы улучшить свои навыки написания скриптов.

Вы завершили первую лабу по основам Apps Script. Создавая и редактируя макросы и пользовательские функции Таблиц, вы изучили основные концепции Apps Script. Вы можете расширить свои знания об Apps Script в следующей лабе!

Считаете ли вы эту лабу полезной?

1) Да
2) Нет

Что мы рассмотрели

  • Основные концепции Apps Script.
  • Как ориентироваться в редакторе скриптов.
  • Как создавать и обновлять макросы и скрипты для Таблиц.
  • Как создавать собственные функции для Google Таблиц.

Что дальше

Следующая лаба в этом сборнике представляет основные классы и терминологию службы Spreadsheet Service Apps Script. Эта служба позволяет вам достаточно полно контролировать значения и представления данных в Google Таблицах с помощью Apps Script.

Найдите следующую лабу по ссылке Основы Apps Script в Google Таблицах №2: Таблицы, Листы и Диапазоны!

Google Sheets lets you record
macros that duplicate a
specific series of UI interactions that you define. Once you’ve recorded a
macro, you can link it to a keyboard shortcut in the form
Ctrl+Alt+Shift+Number. You can use that shortcut to quickly execute the
exact macro steps again, typically in a different place or on different data.
You can also activate the macro from the Google Sheets Extensions
> Macros menu.

When you record a macro, Google Sheets automatically creates an Apps Script
function (the macro function) that replicates the macro steps. The macro
function is added to an Apps Script project bound
to the sheet, in a file titled macros.gs. In the event that there is
already a project file bound to the sheet with that name, the macro function
is appended to it. Google Sheets also automatically updates the script
project manifest, recording the name
and keyboard shortcut assigned to the macro.

Since every recorded macro is defined entirely within Apps Script, you can
edit them directly within the Apps Script editor. You can even write macros
from scratch in Apps Script, or take functions you’ve already written and
turn them into macros.

Creating macros in Apps Script

You can take functions written in Apps Script and use them as macro functions.
The easiest way to do this is by
importing an existing function from the
Google Sheets editor.

Alternatively, you can create macros within the Apps Script editor by
following these steps:

  1. In the GGoogle Sheets UI, select Extensions >
    Apps Script to open the
    script bound to the sheet in the AApps Script editor.
  2. Write the macro function. Macro functions should take no arguments and return
    no values.
  3. Edit your script manifest
    to create the macro and link it to the macro function. Assign it a unique
    keyboard shortcut and name.
  4. Save the script project. The macro is then available for use in the sheet.
  5. Test the macro function in the sheet to verify that functions as intended.

Editing macros

You can edit macros attached to a sheet by doing the following:

  1. In the Google Sheets UI, select Extensions >
    Macros > Manage macros.
  2. Find the macro you want to edit and select
    > Edit macro. This opens
    the Apps Script editor to the project file containing the macro function.
  3. Edit the macro function to change the macro behavior.
  4. Save the script project. The macro is then available for use in the sheet.
  5. Test the macro function in the sheet to verify that functions as intended.

Importing functions as macros

If there is already a script bound to a sheet,
you can import a function in the script as a new macro and then assign it
a keyboard shortcut. You can do this by
editing the manifest
file and adding another element to the
sheets.macros[] property.

Alternatively, follow these steps to import a function as a macro from the
Sheets UI:

  1. In the Google Sheets UI, select Extensions >
    Macros > Import.
  2. Select a function from the list presented and then click Add function.
  3. Select to close the dialog.
  4. Select Extensions > Macros
    > Manage macros.
  5. Locate the function you just imported in the list. Assign a unique keyboard
    shortcut to the macro. You can also change the macro name here; the name
    defaults to the name of the function.
  6. Click Update to save the macro configuration.

Manifest structure for macros

The following manifest file example snippet shows the section of a
manifest that defines Google Sheets macros.
The sheets section of the manifest defines the name and keyboard shortcut
assigned to the macro and the name of the macro function.

  {
    ...
    "sheets": {
      "macros": [{
        "menuName": "QuickRowSum",
        "functionName": "calculateRowSum",
        "defaultShortcut": "Ctrl+Alt+Shift+1"
      }, {
        "menuName": "Headerfy",
        "functionName": "updateToHeaderStyle",
        "defaultShortcut": "Ctrl+Alt+Shift+2"
      }]
    }
  }

See the Manifest structure
guide for more details on how Apps Script manifests are constructed.
The Sheets and
Macro sections describe the
fields that define Sheets macros.

Best practices

When creating or managing macros in Apps Script, it is recommended that you
adhere to the following guidelines.

  1. Macros are more performant when they are light-weight. Where possible, limit
    the number of actions a macro takes.
  2. Macros are best suited for rote operations that need to be repeated
    frequently with little or no configuation. For other operations, consider
    using a custom menu item instead.
  3. Always remember that macro keyboard shortcuts must be unique, and a given
    sheet can only have ten macros with shortcuts at any one time. Any additional
    macros can only be executed from the Extensions >
    Macros menu.
  4. Macros that make changes to a single cell can be applied to a range of
    cells by first selecting the full range and then activating the macro.
    This means it is often unnecessary to create macros that duplicate the
    same operation across a predefined range of cells.

Things you can’t do

There are a few restrictions on what you can do with macros:

Use macros outside bound scripts

Macros are defined in scripts bound to specific Google Sheets. Macro
definitions are ignored if defined in a
standalone script or
web app.

Define macros in Sheets add-ons

You cannot distribute macro definitions using a
Sheets add-on. Any macro definitions in a Sheets
add-on project are ignored by users of that add-on.

Distribute macros in script libraries

You cannot distribute macro definitions using Apps Script
libraries.

Use macros outside of Google Sheets

Macros are only a feature in Google Sheets, and do not exist for Google Docs,
Forms, or Slides.

Понравилась статья? Поделить с друзьями:
  • Как найти диагональ квадрата 36см
  • Как найти число равное 100 процентам
  • Как найти ноутбук через серийный номер
  • Quik ошибка 0x800b010a в цепочке сертификатов как исправить
  • Как найти деда своего ветерана войны