Где найти 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