Основы скриптов приложений с Google Таблицами №1: макросы и пользовательские функции

1. Добро пожаловать в AppsScript

Что такое Apps Script?

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.

Служба электронных таблиц

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

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

Чему вы научитесь

В этом плейлисте рассматриваются все темы, которые вам понадобятся для начала работы с Apps Script с Google Таблицами:

  1. Макросы и пользовательские функции
  2. Электронные таблицы, листы и диапазоны
  3. Работа с данными
  4. Форматирование данных
  5. Диаграммы и презентации данных в слайдах

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

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

2. Введение

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

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

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

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

Чему вы научитесь

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

Что вам понадобится

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

3. Создайте макрос в Таблицах

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

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

Прежде чем начать

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

5b8aded1bb349ecf.png

Копия примера таблицы для вашего использования помещена в папку Google Диска и называется «Копия 10 самых кассовых фильмов (2018)».

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

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

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

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

  1. В диалоговом окне Макрос выберите Относительная ссылка.

c59f2f12317352d2.gif

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

1d782ee30c66a02b.gif

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

f7e7abaf76e338c7.png

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

d5e630acbe83148.png

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

97cb244ffebe8953.png

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

b4610a54340da518.gif

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

4ed7fbed18ea3681.png

Активируйте свой макрос

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

  1. Чтобы создать лист, нажмите «Добавить лист». 9c9b0c19bf317e7f.png .

927c012b4e11475b.png

  1. На новом листе добавьте текст в ячейки A1:C2 . Примеры ввода можно посмотреть ниже:

c3aadaef52a609bf.png

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

cfe36fcf833d0bd7.gif

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

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

7c7130a4a697bd92.png

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

4. Макросы в редакторе скриптов

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

Редактор сценария

Теперь, когда вы создали макрос, вы можете посмотреть его код. Чтобы просмотреть скрипт макроса, нажмите «Расширения» > «Скрипт приложений» , чтобы открыть редактор кода для скрипта приложений в браузере.

Редактор скриптов позволяет писать код на языке Apps Script и запускать эти скрипты на серверах Google.

Анализ macros.gs

Проверьте текущий скрипт. Таблицы создали файл скрипта macros.gs при записи макроса Header , заполнив его соответствующей функцией Apps Script с именем Header . При активации макроса Header Таблицы запускают эту функцию.

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

5d653a69a0897adf.png

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

/** @OnlyCurrentDoc */

Большинство скриптов запрашивают у пользователя определённые разрешения перед запуском. Эти разрешения определяют, какие действия пользователь разрешает скрипту. Если в проекте скрипта присутствует комментарий @OnlyCurrentDoc , Apps Script запрашивает только разрешение на доступ и обновление текущей таблицы. Без этого комментария Apps Script запросил бы разрешение на доступ и обновление всех таблиц пользователя. Рекомендуется всегда добавлять эту аннотацию, если вы работаете только с одним файлом. Макрорекордер добавляет этот комментарий автоматически.

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

function Header(){
  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);
};

Этот код выполняется при активации макроса Header . После function , метка Header() определяет имя функции и её параметры. Обратите внимание, что Header() не требует параметров, так как макрофункции в 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() чтобы предотвратить избыточный вызов этого метода из spreadsheet . По мере написания кода с использованием Apps Script вы лучше познакомитесь с этим соглашением о вызове нескольких методов в одном классе (также известным как цепочка методов ). А пока вы можете прочитать следующие краткие пояснения к каждому методу в блоке кода:

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

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

spreadsheet.getActiveSheet().setFrozenRows(1);

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

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

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

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

Измените затронутые клетки

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

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

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
    /* sheet.getMaxColumns() replaced with 10.*/
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Чтобы сохранить ваш сценарий, нажмите «Сохранить». сохранять .
  2. Чтобы переименовать проект, введите «Макросы и пользовательские функции» в качестве нового имени проекта и нажмите «Переименовать» .
  3. Чтобы создать лист, в Таблицах нажмите «Добавить лист». 9c9b0c19bf317e7f.png .

927c012b4e11475b.png

  1. В редакторе скриптов в списке функций выберите Header и нажмите Выполнить .

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

8a58ba02535b2b9c.png

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

Далее давайте узнаем, как настраивать цвета макроса.

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

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

Эти инструкции направлены на изменение цвета фона вашего макроса:

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

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
    /* #4c1130 replaced with #afeeee.*/
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Чтобы сохранить ваш сценарий, нажмите «Сохранить». сохранять .
  2. В списке функций выберите Header и нажмите Выполнить .

В Таблицах фоновая заливка первых 10 столбцов в первой строке изменит цвет на пользовательский бирюзовый:

bbd26f7c8e35039.png

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

Вы изменили цвет фона, заданный макросом. Если вы хотите изменить и цвет текста, измените второй цветовой код.

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

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
  .setFontColor('#191970')/* #ffffff replaced with #191970.*/
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Чтобы сохранить ваш сценарий, нажмите «Сохранить». сохранять .
  2. В списке функций выберите Header и нажмите Выполнить .

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

2eaf2fb4879e1b36.png

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

5. Напишите свой первый скрипт: пользовательские функции

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

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

Создать файл сценария

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

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

В редакторе появится новая вкладка с именем customFunctions.gs .

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

Конвертировать доллары США в швейцарские франки

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

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

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

menu showing Insert 1 right

  1. Назовите столбец «Worldwide_Gross (швейцарские франки)» в ячейке I1 .

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

  1. В customFunctions.gs замените код myFunction() следующим кодом:
/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The converted total of Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

Это код, который конвертирует доллары США в швейцарские франки. Попробуйте выполнить инструкции ниже и узнайте, как запустить пользовательскую функцию в таблицах.

  1. Чтобы сохранить ваш сценарий, нажмите «Сохранить». сохранять .
  2. В Таблицах выберите ячейку I2 .
  3. В строке функций введите =USDTOCHF(H2) .

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

  1. Переместите курсор в нижний правый угол ячейки I2 и выберите маленький синий квадрат (курсор должен превратиться в 9c9b0c19bf317e7f.png (при указании на синий квадрат).
  2. Перетащите синий прямоугольник вниз, чтобы выделить диапазон I3 : I11 .

3cf46560d6cea0de.gif

В столбце I теперь указаны конвертации в швейцарские франки значений в долларах США из столбца H.

7fc06b3d7e3e2a9.png

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

Анализ USDTOCHF()

В начальных комментариях подробно описывается цель кода:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */

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

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

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

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

d8680ab6efae97ac.gif

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

Далее сосредоточимся на коде в функции USDTOCHF() :

function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

Как упоминалось ранее, USDTOCHF() принимает числовую переменную dollars, умножает её на фиксированный обменный курс и возвращает значение, преобразованное в швейцарские франки, в числовой переменной swissFrancs . Входным параметром является значение, содержащееся в ячейке, указанной при добавлении пользовательской функции к ячейке. В этом примере входные суммы в долларах берутся из столбца H. Выходное значение swissFrancs помещается в ячейку функции (столбец I в данном примере).

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

Объединить префикс строки

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

  1. В редакторе скриптов обновите аннотацию @return , чтобы она возвращала строку вместо числа.
  2. Измените return swissFrancs на return 'CHF' + swissFrancs .

Оператор + добавляет строку CHF к началу значения, содержащегося в swissFrancs . Ваш код должен выглядеть следующим образом:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {string} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99;
  return 'CHF' + swissFrancs;
}
  1. Чтобы сохранить ваш сценарий, нажмите «Сохранить». сохранять .

Строка швейцарского франка теперь предшествует значениям столбца I:

20e4bfb7f0a994ea.png

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

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

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

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

function USDTOCHF(dollars){
  // Gets a cache that is common to all users of the script.
  var cache = CacheService.getScriptCache();

  // Accesses the memory location (rates.CHF) of the script cache.
  var rate = cache.get('rates.CHF');

  // If a cache miss occurs, the program fetches the current
  // CHF rate from an API and stores the rate in the cache
  // for later convenience.
  if (!rate) {
    var response =
UrlFetchApp.fetch('https://api.exchangeratesapi.io/latest?base=USD');
    var result = JSON.parse(response.getContentText());
    rate = result.rates.CHF;
    cache.put('rates.CHF', rate);
  }
  // Converts dollars to CHF according to the latest rate.
  var swissFrancs = dollars * rate;
  // Returns the CHF value.
  return 'CHF' + swissFrancs;
}

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

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

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

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

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

6. Заключение

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

Оказался ли этот практический практикум полезным?

Да Нет

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

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

Что дальше?

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

Следующую лабораторную работу можно найти в разделе «Таблицы, таблицы и диапазоны» .