Где найти 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 записи на удаление |
Ответ:
{'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)
| Параметр | Описание |
|---|---|
| table_id | id таблицы |
| record_id | id записи, из которой берем значения |
| return_column | необязательный параметр. Название столбца из которого нужно вернуть значение. |
Ответ: Если запись найдена, возвращает словарь типа {"column_name1": "value1", "column_name2": "value2"}. Если при этом передан параметр return_column, и такой столбец существует, в ответе будет значение только по этому столбцу.
Получение записи из таблицы
get_records_from_table(table_id, start_row, count, start_col, end_col) - получение записи из таблицы
| Параметр | Описание | Примечание |
|---|---|---|
| table_id | id таблицы | |
| start_row | необязательный параметр, целое число. Указывает начало диапазона строк. | Передается номер строки, с которой включительно необходимо прочесть значения таблицы. Указывается без кавычек. |
| count | необязательный параметр, целое число. Указывает количество строк, которое нужно получить | По умолчанию - 1000, максимум - 5000. Указывается без кавычек. |
| start_col | необязательный параметр, строка. Указывает начало диапазона столбцов | Передается название колонки, с которой включительно необходимо прочесть значения таблицы. Указывается в кавычках |
| end_col | необязательный параметр, строка. Указывает конец диапазона столбцов | Передается название колонки, до которой включительно необходимо прочесть значения таблицы. Указывается в кавычках. |
Если указать только начало диапазона строк/столбцов, то будут получены все данные от указанного значения без ограничения по концу диапазона. Аналогично можно не указывать начало диапазона, указав только конец.
Пример в калькуляторе
В блоке, в котором необходимо получить записи из таблицы, кликните на раздел "Калькулятор" в настройках блока и пропишите функцию с указанием параметров.

Ответ бота будет следующим:

Получить данные из таблицы по заданному диапазону
table_read_cells(table_id, cell_data) - позволяет получить данные из таблицы с помощью указания диапазонов
| Параметр | Описание |
|---|---|
| **!** table_id | обязательный параметр, id таблицы |
| **!** cell_data | обязательный параметр, словарь с диапазонами. Пример cell_data: '{"a1":"a1", "a3": "b4", "c1": "c3"}'
|
Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и все ячейки со значениями:
{"status":true,"A1":"значение","A3":"значение","B3":"значение","A4":"значение", "B4":"значение", "C1":"","C2":"значение","C3":"ddddddd"} или описание ошибки {"status":false,"err":"Ошибка или описание"}
Пример в калькуляторе
Например, в ячейках таблицы существуют определенные указанные значения:

Чтобы получить данные из таблицы через бота, передайте необходимые диапазоны в функции в калькуляторе:

В примере конструкция #{res}, в которой лежит переменная, поможет отобразить в сообщении, какие данные были получены с помощью функции и заданного диапазона:

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