Важно - Для использования api таблица должна быть либо открыта для "всех, у кого есть ссылка", либо если нет такой возможности, то для пользователя twin-gsheets@gspread-restapi.iam.gserviceaccount.com.
Для редактирования ячеек в таблице, у этого пользователя также должны быть права редактора в настройках доступа к таблице.
Работать с запросами удобнее, если тестировать запросы при помощи онлайн-утилиты Postman, информацию по нему можно найти в статье: Инструмент для тестирования API. Postman.
Данные из таблицы можно получить после использования API запроса для чтения данных из гугл-таблицы, его описание есть в статье: Как найти строку в гугл-таблице.
- Для начала нужно составить запрос в блоке Запрос к серверу:
- Тип запроса: GET
- URL: http://intgr.twin24.io:60061/get_data?spreadsheet_url={url}&worksheet_name={sheet}
Параметры в URL:
- {url}: Ссылка на гугл-таблицу.
- {sheet}:Название нужного листа. Если в таблице только один лист, этот параметр не обязателен.
В нашем случае запрос вернёт все данные, которые есть в таблице, так как фильтры по ячейкам и столбцам в нём не используются.
Ответ на запрос чтения информации из гугл-таблицы имеет следующий формат:Где:{ "count": 4, "data": [ { "Дата": "2023-09-28", "Время": "13:00", "Row": 2 }, { "Дата": "2023-09-28", "Время": "13:30", "Row": 3 }, { "Дата": "2023-09-28", "Время": "14:00", "Row": 4 }, { "Дата": "2023-09-28", "Время": "14:30", "Row": 5 } ], "filter_used": true, "filter_headers": "Дата", "filter_values": "2023-09-28", "msg": "Ok" }
- count: Количество заполненных строк в таблице, за исключением заголовков.
- data: Массив информации из таблицы, данные в котором хранятся в формате: "Заголовок": "Значение ячейки", "Row", "Номер строки".
- Для получения значения из ответа в сценарии и сохранения его в переменную, нужно использовать следующую конструкцию в настройках ветки, выходящей из блока Запрос к серверу:
row = result.data.0.Row
В данном примере в переменную row сохраняется номер строки из первого элемента массива data.- result: Обозначает ответ от сервера.
- data: Массив с информацией из ответа.
- 0: Обозначает первый элемент массива, 1 обозначает второй и так далее.
- Row: Название поля из ответа сервера, в котором содержится номер строки.
- Далее можно использовать значение переменной, созданной в ветке из блока Запрос к серверу в сценарии по имени переменной {row}
Полезные инструменты
Для упрощения работы с получением информации из ответа сервера, можно использовать бота для форматирования json файлов https://t.me/twin_json_bot.
Этот бот переводит json формат, который используется в ответе от сервера, в строки, которые можно использовать в блоке Запрос к серверу для получения информации из ответа сервера.
Пример ввода в диалоге с данным ботом:
{ "count": 4, "data": [ { "Дата": "2023-09-28", "Время": "13:00", "Row": 2 }, { "Дата": "2023-09-28", "Время": "13:30", "Row": 3 }, { "Дата": "2023-09-28", "Время": "14:00", "Row": 4 }, { "Дата": "2023-09-28", "Время": "14:30", "Row": 5 } ], "filter_used": true, "filter_headers": "Дата", "filter_values": "2023-09-28", "msg": "Ok" }
Пример ответа бота:
{ "count": 4, \\count | result.count "data": [ \\data | result.data { \\data.0 | result.data.0 "Дата": "2023-09-28", \\data.0.Дата | result.data.0.Дата "Время": "13:00", \\data.0.Время | result.data.0.Время "Row": 2 \\data.0.Row | result.data.0.Row }, { \\data.1 | result.data.1 "Дата": "2023-09-28", \\data.1.Дата | result.data.1.Дата "Время": "13:30", \\data.1.Время | result.data.1.Время "Row": 3 \\data.1.Row | result.data.1.Row }, { \\data.2 | result.data.2 "Дата": "2023-09-28", \\data.2.Дата | result.data.2.Дата "Время": "14:00", \\data.2.Время | result.data.2.Время "Row": 4 \\data.2.Row | result.data.2.Row }, { \\data.3 | result.data.3 "Дата": "2023-09-28", \\data.3.Дата | result.data.3.Дата "Время": "14:30", \\data.3.Время | result.data.3.Время "Row": 5 \\data.3.Row | result.data.3.Row } ], "filter_used": true, \\filter_used | result.filter_used "filter_headers": "Дата", \\filter_headers | result.filter_headers "filter_values": "2023-09-28", \\filter_values | result.filter_values "msg": "Ok" \\msg | result.msg }
Напротив каждой строки есть комментарии.
Нас интересуют комментарии, в которых в начале написано слово result, именно так и нужно будет записать значение переменной, присваиваемой в блоке Запрос к серверу.