DroidScript
DroidScript
учимся и разрабатываем

Thunkable X: работа с таблицами AirTable

29.04.2018

Для работы с таблицами AirTable используется компонент Spreadsheet. Все его методы предназначены только для работы с данными в уже созданной таблице.

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

Предположим, у нас есть таблица с двумя полями Name и Age. При создании новой записи она будет добавлена в её конец.

Пример 1. Добавление новой записи в таблицу.

Добавление новой записи в таблицу

В случае успеха данный метод возвращает добавленный в таблицу объект, который можно посмотреть в формате JSON. В скрытом поле _id хранится уникальный идентификатор записи. Значение данного поля необходимо указывать при использовании методов UpdateRow, ReplaceRow и DeleteRow, как будет показано дальше.

Методы компонента Spreadsheet позволяют получить из таблицы:
  • все записи
  • выбранную запись (строку)
  • выбранное поле (столбец)

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

Пример 2. Отображение всех значений выбранного столбца таблицы в компоненте List Viewer (вариант 1).

Отображение всех значений выбранного столбца таблицы в компоненте List Viewer

Метод Spreadsheet.GetAllRows в переменной rows возвращает список объектов. Для получения значения свойства объекта используется блок "get property of object". Далее из этих значений формируется строка значений, разделённых запятой. Последняя запятая удаляется, а затем из полученной текстовой строки создаётся список, отображаемый в List Viewer.

Пример 3. Отображение всех значений выбранного столбца таблицы в компоненте List Viewer (вариант 2)

Отображение всех значений выбранного столбца таблицы в компоненте List Viewer

Данный вариант с использованием метода GetColumn короче предыдущего и позволяет динамически задавать название столбца. Но здесь необходимо указать максимальное количество записей. Для гарантированного вывода всех записей задаём большое число.

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

На базе варианта 2 можно осуществить проверку на уникальность (по одному ключевому полю) перед добавлением новой записи в таблицу. При отсутствии значения в списке блок "in list find" вернёт 0.

Пример 4. Определение номера записи по значению ключевого поля.

Определение номера записи по значению ключевого поля

Использование объектов не позволяет получить универсальный алгоритм, так как при этом нужно знать названия полей таблицы и для получения значения каждого поля использовать отдельный блок "get property of object". Поэтому во многих случаях практичнее использовать объекты совместно с форматом JSON.

Пример 5. Получение записей из списка в формате JSON.

Получение записей из списка в формате JSON

Функции передаётся список объектов всех или выбранных записей, после чего в цикле формируется строка текста в формате JSON. Обратите внимание на инициализацию переменной _listText пустой строкой. Если этого не сделать, то данная переменная будет иметь неопределённое значение undefined, к которому в цикле будут добавляться новые строки.

Все переменные в Thunkable X являются глобальными. Префикс _ перед именем переменной я ввожу для того, чтобы указать на использование данной переменной в локальном смысле. Это не сделает переменную локальной, но помогает визуально отделить переменные.

Если объекты и формат JSON не подходят, то можно при помощи них создать свою структуру данных, но тогда придётся самостоятельно разработать методы доступа к ним. Например:

Запись-ключ1# "поле1":"значение1","поле2":"значение2",... "полеN":"значениеN"
Запись-ключ2# "поле1":"значение1", "поле2":"значение2",... "полеN":"значениеN"
...
Запись-ключN#"поле1":"значение1", "поле2":"значение2",... "полеN":"значениеN"

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

На последок пример использования скрытого поля идентификатора записи _id.

Пример 6. Обновление записи.

Обновление записи

Значения поля _id являются уникальными, но для работы с таблицей необходимо определить уникальное ключевое поле (поля) исходя из данных. Это может быть поле электронного адреса, пары логин-электронный адрес, пароль, поле автоинкремента и др.

© 2016-2024 
actech