Добавить в корзинуПозвонить
Найти в Дзене

Как продавать решения на Google Sheets и защитить свой код — библиотеки Apps Script

Если вы делаете коммерческие решения на Google Sheets — рано или поздно столкнётесь с вопросом: как защитить код от копирования? Клиент получил таблицу со скриптом, скопировал, раздал коллегам — и перестал платить. Решение есть — библиотеки Google Apps Script. Это стандартный механизм Google который позволяет писать код один раз и подключать его к любому количеству таблиц — без передачи исходного кода. Как работают библиотеки Обычно когда вы пишете Apps Script — код хранится внутри конкретной таблицы и виден всем у кого есть доступ к таблице. Библиотека — это отдельный скрипт-проект который хранится независимо. Вы публикуете его как библиотеку, получаете ID. Другие таблицы подключают эту библиотеку по ID и могут вызывать её функции — но видят только имена функций, не их содержимое. Как это выглядит на практике Вы пишете библиотеку с функцией загрузки данных из WB. Публикуете. Клиент подключает библиотеку к своей таблице и пишет: javascript var data = MasterMP.loadWBData(apiKey, dateFro

Если вы делаете коммерческие решения на Google Sheets — рано или поздно столкнётесь с вопросом: как защитить код от копирования? Клиент получил таблицу со скриптом, скопировал, раздал коллегам — и перестал платить.

Решение есть — библиотеки Google Apps Script. Это стандартный механизм Google который позволяет писать код один раз и подключать его к любому количеству таблиц — без передачи исходного кода.

Как работают библиотеки

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

Библиотека — это отдельный скрипт-проект который хранится независимо. Вы публикуете его как библиотеку, получаете ID. Другие таблицы подключают эту библиотеку по ID и могут вызывать её функции — но видят только имена функций, не их содержимое.

Как это выглядит на практике

Вы пишете библиотеку с функцией загрузки данных из WB. Публикуете. Клиент подключает библиотеку к своей таблице и пишет:

javascript

var data = MasterMP.loadWBData(apiKey, dateFrom, dateTo);

Функция выполняется, данные загружаются. Но что происходит внутри loadWBData — клиент не видит. Код защищён.

Контроль доступа

Внутри библиотеки можно реализовать проверку доступа. При каждом вызове функция проверяет ID таблицы которая её вызывает — и сверяет со списком разрешённых.

Список можно хранить в отдельной Google Таблице: ID таблицы, статус (бесплатно/платно), дата истечения доступа. Когда клиент платит — добавляете его ID. Когда подписка заканчивается — меняете статус или удаляете запись.

Простая реализация:

javascript

function checkAccess() {
var callerID = SpreadsheetApp.getActiveSpreadsheet().getId();
var accessSheet = SpreadsheetApp.openById("ID_ВАШЕЙ_ТАБЛИЦЫ_ДОСТУПОВ");
var data = accessSheet.getActiveSheet().getDataRange().getValues();

for (var i = 1; i < data.length; i++) {
if (data[i][0] === callerID && data[i][1] === "active") {
return true;
}
}
return false;
}

Если checkAccess() возвращает false — функции библиотеки не работают.

Уровни доступа

Можно реализовать несколько уровней: бесплатный с ограниченным функционалом и платный с полным. Библиотека проверяет статус и в зависимости от него разрешает или блокирует определённые функции.

Это классическая freemium-модель для решений на Google Sheets.

Обновления без хлопот

Один из главных плюсов библиотек: когда вы обновляете код — все клиенты автоматически получают новую версию. Не нужно отправлять обновлённые таблицы, объяснять как устанавливать.

Нашли баг — исправили в библиотеке. Все клиенты уже на новой версии.

Ограничения

Библиотеки не подходят если клиенту нужно изменять логику под себя — он не сможет этого сделать. Но для коммерческих продуктов где логика ваша и стандартная — это именно то что нужно.

Также стоит помнить: библиотека выполняется в контексте скрипта который её вызывает. Если клиент делится таблицей с кем-то — тот тоже получает доступ к функциям библиотеки. Поэтому проверка по ID таблицы важна.

Итог

Библиотеки Apps Script — это правильная архитектура для любого коммерческого решения на Google Sheets. Код защищён, доступ под контролем, обновления автоматические.

Именно так мы строим решения в ТэйблПроф и Мастер МП.

→ tableprof.ru

ТэйблПроф — автоматизация бизнеса в Google Sheets. Проект группы БКТВ.