Раздел «Таблицы» в Salebot — инструмент для удобного хранения и управления данными внутри платформы. Теперь не нужно переключаться между разными сервисами: все таблицы доступны в одном проекте.

Возможности

  • Создание таблиц с любым количеством строк и столбцов.
  • Хранение и редактирование данных без сторонних инструментов и сервисов.
  • Ввод значений, редактирование строк и столбцов или удаление через чат-бота с помощью функций.

Преимущества

  • ✔ Упрощает работу с данными: вводить информацию в таблицу можно прямо из бота.
  • ✔ Гибкость и простота: создавайте столько таблиц, сколько нужно, настраивайте их под свои бизнес-задачи.
  • ✔ Возможность управлять таблицами без выхода из Salebot.

Таблицы помогают бизнесу структурировать данные и ускорить процессы.

Как создать таблицу

Для начала перейдите в раздел таблиц в необходимом проекте:

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

Пропишите название для таблицы и кликните на кнопку «Готово». Новая таблица будет создана в проекте и появится в разделе «Таблицы»:

Настройки таблицы

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

Вы увидите следующие настройки:

1. Добавление столбцов

Буквенные столбцы

При клике на кнопку в таблицу добавятся столбцы с обозначениями от A до Z.

Столбцы с названиями

При клике на кнопку появится модальное окно, в котором нужно прописать название добавляемого столбца:

После того как вы прописали название столбца, кликните на кнопку «Готово». Новый столбец добавится в таблицу:

2. Добавление строк

Можно добавить фиксированное количество строк — 100:

Или задать необходимое количество строк:

3. Экспорт таблицы

Экспорт позволяет сохранить таблицу в формате CSV со всеми данными и значениями, например, чтобы перенести её в другой проект Salebot или другой сервис для работы с таблицами.

4. Импорт таблицы

Импорт используется для загрузки таблиц из других сервисов.

Другие возможности

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

Также можно создавать новые таблицы при открытии бокового меню.

Чтобы удалить таблицу, перейдите в основной раздел:

На плашке с ненужной таблицей найдите кнопку удаления.

Внимание!

Восстановить удалённую таблицу нельзя.

Как вводить значения в таблицу

Вводить значения в таблицу можно вручную:

Также значения можно вводить с помощью функций в чат-боте.

Где найти ID таблицы?

Чтобы работать с функциями для чат-бота, понадобится ID таблицы.

Для начала перейдите в нужную таблицу: найдите её в списке и кликните по ней:

Далее кликните по адресной строке:

В адресной строке вы увидите адрес вида:

https://salebot.pro/projects/11111/table/2

Последнее число — ID нужной таблицы:

Создать новую запись в таблице

new_record(table_id, data)

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

Параметры:

  • table_id — ID таблицы.
  • data — словарь с данными, которые нужно записать. Например: {"column_name1": "value1", "column_name2": "value2"}. Если колонки не существует, она создаётся.

Ответ:

ID новой записи.

Пример

Редактировать существующую запись в таблице

edit_record(table_id, record_id, data)

Параметры:

  • table_id — ID таблицы.
  • record_id — ID редактируемой записи.
  • data — словарь с данными, которые нужно изменить. Например: {"column_name1": "value3", "column_name2": "value4"}. Если колонки не существует, она не создаётся.

Ответ:

Возвращает полные данные по отредактированной записи:

{"column_name1": "value3", "column_name2": "value4"}

Пример

Удалить запись из таблицы по ID записи

delete_record(table_id, record_id)

Параметры:

  • table_id — ID таблицы.
  • record_id — ID записи для удаления. record_id может быть как одним значением, так и массивом значений, например [1, 2, 5].

Ответ:

{"message": "Удалено записей: 1"}

Найти первую запись по указанному значению в таблице

find_record(table_id, value, find_in, return_from)

Параметры:

  • table_id — ID таблицы.
  • value — значение, по которому ищем совпадение.
  • find_in — необязательный параметр. Название столбца, по которому ведётся поиск. Если не указан, запись ищется по всем столбцам.
  • return_from — необязательный параметр. Название столбца, из которого нужно вернуть значение.

Ответ:

Если return_from указан, вернётся значение указанного столбца, если он есть в таблице.

Если return_from не указан или такого столбца нет, в ответе будут полные данные найденной записи:

{"column_name1": "value3", "column_name2": "value4"}

Пример

Получить значения из указанной записи

get_record_data(table_id, record_id, return_column)

Параметры:

  • table_id — ID таблицы.
  • record_id — ID записи, из которой берём значения.
  • return_column — необязательный параметр. Название столбца, из которого нужно вернуть значение.

Ответ:

Если запись найдена, функция возвращает словарь:

{"column_name1": "value1", "column_name2": "value2"}

Если передан параметр return_column и такой столбец существует, в ответе будет значение только из этого столбца.

Получение всех значений при поиске по нескольким колонкам

find_records_multiple_cols_list(table_id, column_data, return_col, with_index, delimiter, algorithm)

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

Это аналог функции sheet_search_in_multiple_cols_return_list для Google Таблиц.

Параметры:

  • table_id — ID таблицы.
  • column_data — поисковый запрос, то, что нужно найти.
  • return_col — название колонки, из которой нужно вернуть значения.
  • with_index — формат индексации найденных значений:
    • 0 — нумерация (1, 2, 3, ...);
    • 1 — индекс строки;
    • "" — список значений с новой строки без индексов и нумерации.
  • delimiter — разделитель между индексом и значением.
  • algorithm — алгоритм поиска:
    • F — полное совпадение;
    • K — наличие ключевых слов;
    • R — регулярное выражение;
    • 1-100 — процент похожести.

Пример

table_id = 7

data = {"возраст": "26", "город": "Москва"}

return_col = "имя"

with_index = 1

delimiter = " - "

algorithm = "F"

res = find_records_multiple_cols_list(table_id, data, return_col, with_index, delimiter, algorithm)

res_list = res["list"]

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

{
  "status": true,
  "rows_index": [2, 3],
  "quantity": 2,
  "list": "2 - Илья\n3 - Раиса"
}

Где:

  • status — результат поиска.
  • rows_index — массив с номерами найденных строк.
  • quantity — количество найденных строк.
  • list — строка со всеми значениями из выбранного столбца.

Если возникла ошибка, вернётся статус false и описание ошибки:

{"status": false, "error": "Ошибка или описание"}

Получение первого значения при поиске по нескольким колонкам

find_first_record_multiple_cols_row(table_id, column_data, algorithm)

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

Это аналог функции sheet_search_in_multiple_cols_return_row для Google Таблиц.

Параметры:

  • table_id — ID таблицы.
  • column_data — поисковый запрос, то, что нужно найти.
  • algorithm — алгоритм поиска:
    • F — полное совпадение;
    • K — наличие ключевых слов;
    • R — регулярное выражение;
    • 1-100 — процент похожести.

Пример

table_id = 7

data = {"возраст": "26", "город": "Москва"}

algorithm = "F"

res = find_first_record_multiple_cols_row(table_id, data, algorithm)

row_data = res["row_data"]

row_id = row_data["ID"]

row_name = row_data["имя"]

row_age = row_data["возраст"]

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

{
  "status": true,
  "rows_index": [2, 3],
  "quantity": 2,
  "row_data": {
    "ID": 2,
    "имя": "Илья",
    "возраст": "26",
    "город": "Москва"
  },
  "row": 2
}

Где:

  • status — результат поиска.
  • rows_index — массив с номерами найденных строк.
  • row_data — данные из найденной строки.
  • row — номер найденной строки.

Если возникла ошибка, вернётся статус false и описание ошибки:

{"status": false, "error": "Ошибка или описание"}

Арифметика по ячейке

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

Прибавить число к ячейке таблицы

Прибавить число к ячейке внутренней таблицы и вернуть новое значение.

table_add_to_cell(table_id, record_id, column, value)
  • table_id — id таблицы
  • record_id — id записи
  • column — название столбца
  • value — число, которое нужно прибавить

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

Вычесть число из ячейки таблицы

table_sub_to_cell(table_id, record_id, column, value)

Параметры и поведение те же, что у table_add_to_cell.

Ответ:

Новое значение ячейки. Если в «Остаток» было 10, то table_sub_to_cell(1, 1, "Остаток", 3) вернёт:

7

Умножить ячейку таблицы на число

table_mul_to_cell(table_id, record_id, column, value)

Параметры и поведение те же, что у table_add_to_cell.

Ответ:

Новое значение ячейки. Если в «Цена» было 12, то table_mul_to_cell(1, 2, "Цена", 1.5) вернёт:

18

Разделить ячейку таблицы на число

table_div_to_cell(table_id, record_id, column, value)

Параметры и поведение те же, что у table_add_to_cell. Деление на ноль вернёт ошибку.

Ответ:

Новое значение ячейки. Если в «Цена» было 18, то table_div_to_cell(1, 2, "Цена", 2) вернёт:

9

Занять первую свободную запись в таблице

Найти первую запись, подходящую под условие, и сразу пометить её. Поиск и пометка выполняются одним запросом, поэтому одна и та же строка не достанется двум клиентам одновременно. Нужна для промокодов, слотов записи и очереди.

table_claim_record(table_id, filter_data, values)
  • table_id — id таблицы
  • filter_data — json вида {"Столбец": "значение"}, по которому ищется свободная запись. Сравнение точное. Пустое значение означает «ячейка пустая», то есть запись ещё не выдана. Нужен хотя бы один столбец
  • values — json вида {"Столбец": "значение"} с тем, что записать в найденную строку. Без него та же строка выдавалась бы снова

Ответ:

Полные данные занятой записи вместе с её ID — его можно использовать дальше в edit_record. Для таблицы промокодов вызов

table_claim_record(2, '{"Выдан":""}', '{"Выдан":"#{client_id}"}')

вернёт:

{"ID":1,"Код":"SALE10","Выдан":"482913"}

Повторный вызов выдаст следующую свободную запись:

{"ID":2,"Код":"SALE20","Выдан":"482914"}

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

if(table_claim_record(2, '{"Выдан":""}', '{"Выдан":"#{client_id}"}') == '', "Промокоды закончились", "Ваш промокод выдан")

Посчитать значение по столбцу таблицы

Посчитать сумму, среднее, количество, минимум или максимум по столбцу.

table_aggregate(table_id, func, column, filter_data)
  • table_id — id таблицы
  • func — что посчитать: count, sum, avg, min или max
  • column — название столбца. Обязателен для всех функций, кроме count
  • filter_data — необязательный параметр. json вида {"Столбец": "значение"} — считать только по подходящим записям. Сравнение точное, пустое значение означает «ячейка пустая»

Пустые и нечисловые ячейки пропускаются: среднее считается только по заполненным числам, а минимум не становится нулём из-за пустой строки. count при этом считает все подошедшие записи, включая пустые.

Ответ:

Число. Для таблицы «Склад»

ID Товар Остаток Цена
1 Гайка 8 25.5
2 Болт 4 9
3 Винт 5 нет

вызовы вернут:

table_aggregate(1, "count")                                  -> 3
table_aggregate(1, "sum", "Остаток")                         -> 17
table_aggregate(1, "avg", "Остаток")                         -> 5.6666666667
table_aggregate(1, "min", "Остаток")                         -> 4
table_aggregate(1, "max", "Цена")                            -> 25.5
table_aggregate(1, "count", "", '{"Товар":"Болт"}')          -> 1
table_aggregate(1, "sum", "Остаток", '{"Товар":"Гайка"}')    -> 8

В примере с max по столбцу «Цена» значение «нет» пропускается как нечисловое.

Если под условие не подошла ни одна запись, возвращается 0:

table_aggregate(1, "count", "", '{"Товар":"Шуруп"}')         -> 0