Google Apps Script:
Организация кода в функции

Как это сделать:

В Google Apps Script, который основан на JavaScript, функции определяются с использованием ключевого слова function, за которым следует уникальное имя функции, круглые скобки (), которые могут содержать параметры, и фигурные скобки {}, ограничивающие блок кода функции. Вот простой пример:

function greetUser() {
  var user = Session.getActiveUser().getEmail();
  Logger.log('Привет, ' + user + '!');
}

greetUser();

Пример вывода:

Привет, [email protected]!

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

function setupSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  sheet.setName('Данные о продажах');
  sheet.appendRow(['Товар', 'Количество', 'Цена']);
}

function populateSheet(data) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Данные о продажах');
  data.forEach(function(row) {
    sheet.appendRow(row);
  });
}

// Инициализируем массив данных
var salesData = [
  ['Виджеты', 15, 2.5],
  ['Гаджеты', 8, 3.75]
];

// Запускаем функции
setupSheet();
populateSheet(salesData);

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

Углубленное изучение

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

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

Для более крупных проектов или более сложных приложений разработчики могут исследовать использование новых возможностей JavaScript, таких как стрелочные функции, async/await для асинхронных операций, и даже TypeScript для статической типизации. TypeScript, в частности, может быть скомпилирован для выполнения как Google Apps Script, предоставляя разработчикам путь к более строгой проверке типов и продвинутым объектно-ориентированным функциям.

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