Разработка

Создание новой строки в таблице с помощью Nodul

Олег Заньков

August 10, 2023

Стандартная ситуация нужно агрегировать данные с разных источников в одну, а специализированные сервисы обычно берут плату за свой сервис и отдельно за интеграцию каждой платформы, к тому-же они часто не очень гибкие. Вы можете немного разобравшись с API настроить агрегации с любых платформ к которым у вас есть доступ к API и собирать все данные в Google sheet, и в них уже настраивать фильтрации и графики по нужным срезам.

Как раз в этой стать вы узнаете как добавляють данные в Google таблицу с помощью Nodul. Для этого достаточно будет получить token чтобы был доступ к Google Sheet API.

Сперва обязательно получим токен по инструкции в нашей статье, только в списке выбрать "Google Sheets API v..." scope "www.googleapis.com/auth/spreadsheets" и "www.googleapis.com/auth/drive";
Подготовим запрос для нашего rest клиента;

Создадим новую таблицу, можно например назвать её "NodulTestSheet4Add", с двумя столбцами "ID" и "Name";

Создание новой таблице

REQ01: Запрос для rest клиента


curl --request POST  --url 'https://webhook.nodul.ru/69/dev/becaa2c2-fcf6-4ef8-89a9-f375b3c0ba26?='
  --header 'Content-Type: application/x-www-form-urlencoded'
  --data token=[Замените квадратные скобки с содержимым на ваш токен] \
  --data tableName=NodulTestSheet4Add \
  --data id=3 \
  --data name=Nodul

Подставим полученный из шага в начале наш токен;

Подстановка токен в react клиенте

Создадим узел "Webhook": "+ Добавить узел" => "Http" => "Webhook";
Скопируем адрес Webhook и вставим его в адресную строку rest клиента;

Копирование ссылки в Webhook
Замена адреса на скопированный из Webhook в rest клиент

Далее добавим другой узел "JavaScript": "+ Добавить узел" => "Code" => "JavaScript";

Сохраняем;

Свяжем узлы вместе;

Запустим и вызовем цепочку для передачи данных между узлами;
Скопируем в него содержимое:


const apiDriveURI = "https://www.googleapis.com/drive/v3/files";
const apiSheetURI= "https://sheets.googleapis.com/v4";
const bToken = "Bearer " + data["{{1.body.token}}"];
const tableFileName = data["{{1.body.tableName}}"];
const newID = data["{{1.body.id}}"];
const newName = data["{{1.body.name}}"];

return {
	apiDriveURI,
	apiSheetURI,
	bToken,
	tableFileName,
	newID,
	newName
}

Проверим во всех конструкциях вида "data["{{1.body.name}}"]" что номер Webhook соответствует от которого получаем данные, если нет заменим на нужные(напомню что 1 это номер узла который написан сразу под узлом над названием типа узла, далее если это запрос то выбирается поле объекта отвечающее за тип переданных/полученных данных - body для форм или query для query параметров);

Сохраняем изменения;

Проверка подставляемые значений на подходящий узел

Создадим узел "HTTP request" для получения id файла таблицы: "+ Добавить узел" => "Http" => "HTTP request";

Сохраняем;

Свяжем узлы вместе;

Запустим и вызовем цепочку для передачи данных между узлами;

Сформируем поле "Url": в начало подставим переменную "apiDriveURI" из "JavaScript", после неё укажем ?:q=name"переменная tableFileName  из "JavaScript"";

Убедимся что метод выбран по умолчанию "Get";

Добавим заголовок "Autorization" и в его значение переменную "bToken" из "JavaScript";

Нажмём "Сохранить";

Подстановка и проверка значений в узел HTTP requst

Создадим узел "HTTP request" для добавления данных: "+ Добавить узел" => "Http" => "HTTP request";
Сохраняем;
Свяжем узлы вместе;

Запустим и вызовем цепочку для передачи данных между узлами;

Сформируем поле "Url": в начало подставим переменную "apiSheetURI" из "JavaScript", после неё /spreadsheets/, после подставим значение которое получили в предыдущем узле {{ 3.body.files.[ 0 ].id}}, и в конце /values/A:B:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS&includeValuesInResponse=true;

Меняем метод на метод "Post";

В тело "raw" подставим:


{
	"range": "A:B",
	"majorDimension": "ROWS",
	"values": [[{{2.newID}}, "{{2.newName}}"]]
}

Добавим заголовок "Autorization" и в его значение переменную "bToken" из первого узла "JavaScript";

Так же добавим заголовок "Content-Type" с значением "application/json";

Нажмём "Сохранить";

Настройка и подстановка значений в узел HTTP request для добавление данных

Запустим и вызовем цепочку для передачи данных между узлами;

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

Проверка google табличку что запись добавилась

В конце вся цепочка в Nodul будет выглядеть так:

Итоговая цепочка Nodul

До встречи в новых статьях

Ссылки:

Основные:  
Nodul
Google OAuth 2.0 Playground

Информация:  
Google Drive API
Google Drive Files: list
Google Sheet API

Google Sheet Method: spreadsheets.values.append

Другие статьи