Google Таблицы и Woove Site: заявки с сайта строками в таблице
Каждая заявка, запись и заказ с сайта добавляются строкой в вашу Google Таблицу
Google Таблицы (Google Sheets) для сайта на Woove Site — это строка в таблице на каждую заявку, запись и заказ. В строке контакты человека, текст заявки и все поля формы. Новое поле формы становится новой колонкой.
Что даёт интеграция
Работает через Apps Script: вы вставляете наш код в таблицу и публикуете его как веб-приложение. Ключи и сервисные аккаунты Google не нужны.
- Заявка с формы — Строка «Заявка с формы» с контактами, комментарием и полями формы.
- Онлайн-запись — Строка «Онлайн-запись» с датой, временем, услугой и специалистом.
- Новый заказ — Строка «Новый заказ» с номером, суммой, составом и доставкой.
- Оплаченный заказ — Строка «Оплаченный заказ» с пометкой «оплачен».
Как получить адрес скрипта
- Создайте Google Таблицу или откройте готовую. Заявки пишутся на первый лист.
- В меню таблицы выберите «Расширения» → «Apps Script».
- Удалите текст в редакторе и вставьте код из раздела «Код скрипта» ниже. Нажмите «Сохранить».
- Нажмите «Начать развертывание» → «Новое развертывание» и выберите тип «Веб-приложение».
- В поле «У кого есть доступ» выберите «Все» и нажмите «Начать развертывание».
- Разрешите скрипту доступ к таблице. На предупреждении о непроверенном приложении нажмите «Дополнительные настройки» и откройте свой проект.
- Скопируйте «URL веб-приложения»: он заканчивается на /exec.
Код скрипта
Скопируйте код целиком. Этот же код есть в карточке интеграции, рядом кнопка «Скопировать код».
// Woove Site → Google Таблицы: каждая заявка с сайта добавляется строкой на первый лист.
// Расширения → Apps Script → вставьте код → Начать развертывание → Веб-приложение, доступ «Все».
function doPost(e) {
var data;
try { data = JSON.parse(e.postData.contents); } catch (err) { return reply({ ok: false, error: 'нет данных заявки' }); }
var book = SpreadsheetApp.getActiveSpreadsheet();
if (!book) return reply({ ok: false, error: 'скрипт не привязан к таблице: создайте его из таблицы через Расширения → Apps Script' });
var sheet = book.getSheets()[0];
if (data.test) return reply({ ok: true, test: true, sheet: sheet.getName() });
var lock = LockService.getScriptLock();
if (!lock.tryLock(20000)) return reply({ ok: false, error: 'таблица занята, повторите позже' });
try {
var row = [['Дата заявки', data.at ? new Date(data.at * 1000) : new Date()]].concat(data.row || []);
var width = sheet.getLastColumn();
var head = width ? sheet.getRange(1, 1, 1, width).getValues()[0] : [];
var out = [];
for (var i = 0; i < row.length; i++) {
var col = head.indexOf(row[i][0]);
if (col < 0) {
head.push(row[i][0]);
col = head.length - 1;
sheet.getRange(1, col + 1).setValue(row[i][0]).setFontWeight('bold');
}
out[col] = row[i][1];
}
for (var j = 0; j < head.length; j++) if (out[j] === undefined) out[j] = '';
sheet.appendRow(out);
return reply({ ok: true, row: sheet.getLastRow(), sheet: sheet.getName() });
} finally {
lock.releaseLock();
}
}
function doGet() {
return reply({ ok: true, woove: 'Скрипт работает. Вставьте этот адрес в карточку «Google Таблицы» в Woove Site.' });
}
function reply(o) {
return ContentService.createTextOutput(JSON.stringify(o)).setMimeType(ContentService.MimeType.JSON);
}Настройка в Woove Site

- Откройте «Site» в левой панели и выберите сайт.
- Перейдите на вкладку «Интеграции» и найдите «Google Таблицы» поиском. Нажмите на плитку, под ней раскроется карточка.
- Включите переключатель и заполните поля из таблицы ниже.
- В блоке «Когда отправлять» отметьте события и нажмите «Проверить доступ». Под кнопками появится «Доступ есть».
- Нажмите «Тестовая заявка»: в сервисе появится проверочная заявка Ивана Петрова.
- Дальше события уходят сами, отправки видны по кнопке «Журнал». Неудачные ждут там же в блоке «Очередь»: мы повторяем их ещё шесть раз за полтора суток, кнопка «Повторить» отправляет сразу. Если ключ не подходит, повтора нет: на почту аккаунта приходит письмо.
- Код скрипта — Вставьте вместо всего текста в редакторе Apps Script и сохраните.
- Адрес веб-приложения — Выдаётся после развёртывания, заканчивается на /exec.
Что попадает в таблицу
Скрипт находит колонки по заголовкам в первой строке листа. Первые колонки: дата заявки, событие и форма, дальше контакты человека. Новое поле формы добавляет колонку в конец, у заказа добавляются номер, сумма, состав и доставка.
«Проверить доступ» отправляет скрипту пробный запрос, строка в таблице при этом не появляется. «Тестовая заявка» добавит строку про Ивана Петрова, её можно удалить.
На что обратить внимание
- Колонки — Колонки можно переставлять и добавлять свои. Если переименовать заголовок, скрипт заведёт колонку со старым названием заново.
- Адрес веб-приложения — По адресу можно только добавить строку, прочитать таблицу по нему нельзя. Всё равно не публикуйте его.
Если не работает
Google просит войти
В развёртывании выбран доступ «Только я» или «Все, у кого есть аккаунт Google». Откройте «Управление развертываниями», поставьте доступ «Все» и сохраните. Адрес при этом не меняется.
Поменяли код скрипта, а работает старый
Веб-приложение работает на той версии, которую вы развернули. Откройте «Управление развертываниями», выберите новую версию и сохраните.
Строки не появляются
Скрипт пишет на первый лист таблицы. Проверьте, не переставили ли листы местами, и загляните в «Журнал» карточки.
Почему телефон записан текстом
Перед телефоном, датой и номером заказа Woove ставит апостроф. Так таблица не превращает номер в число и не считает «+7» формулой.
Несколько сайтов в одну таблицу
Вставьте один и тот же адрес в карточки разных сайтов. В колонке «Сайт» видно, откуда пришла заявка.