Разработка
Apps:
No items found.

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

Олег Заньков
August 10, 2023

Хотите сократить время после поступления заказа с сайта на создание задачи на сборку на складе, а после оформление доставки? Почти всегда это занимает время, особенно если всё делается в ручную, менеджер должен будет увидеть заказ, оперативно сформировать и создать задачу на склад для сборки заказа, после уточнения подробностей. После того как склад закончит сборку и подготовит документы, они должны тоже в ручную перевести задачу в службу доставки. Которая в свою очередь должна уже после оформить оставшиеся документы и остальное всё что нужно для отправки.

Для сокращения время и автоматизации мы настроем возможный сценарий который позволит решить похожую задачу. С помощью Airtbale мы создадим kanban доску на которой будут наши задачи. В Nodul создадим сценарий который будет создавать новую задачу с данными которые передаются при вызове Webhook сценария. А в дальнейшим и обновим задачу если передаём id уже существующей задачи.

Вступление

Настроем сценарий который позволит с помощью "Nodul" создать и обновить запись в таблице из базы "Airtable";

Подготовка Airtable

Заходим на сайт "Airtable";
Ссылки на все сайты есть внизу статьи;
Если у вас уже были таблицы, вернитесь на главную, создайте новую с помощью кнопки "Start from scratch" и выберете "Kanban";


После создания в нижнем меню выбрать столбец "Priority", проверьте так же что были выбраны "Status" и "Assignee";


Если вы только регистрируетесь выберете на шаге с заголовком "Now, we'll add some info" пункт "Tasks" чтобы создать заготовленную Kanban доску с уже добавленными тремя задачами;

Добавление personal token

Перейдём в develop пространство по ссылке "Airtable создание personal token";
Нажать кнопку "Create new token" в верхнем правом углу;


Введите любое имя, например "AirtableNodul";


В "Scope" добавьте следующие: data.records:read data.records:write schema.bases:read;


В пункте "Permissions" выбираем нужный "workspace" к которому хотим предоставить доступ чтобы управлять им с помощью "API";


Нажимаем "Create token";


Сохраните полученный токен, например на время в блокноте;

Создание проекта в Nodul

Переходим на наш список с проектами в "Nodul";
Создадим новый проект;


Сразу же создадим первый узел "Webhook";


Скопируйте его адрес в ваш rest клиент или в блокнот;
Сохраняем узел;


Создадим узел "JavaScript"(JS) и скопируем в него код из статьи;


Код для JS узла

let apiURI, personalToken, newTask, recordID;
	apiURI = "https://api.airtable.com/v0";
	personalToken = "Bearer [вставьте вместо этих квадратных скобок ваш personal token]";
	newTask = {
		name: , // После двоеточия и до запятой выберете поле name из полученного запроса
		status: , // После двоеточия и до запятой выберете поле status из полученного запроса
		priority: , // После двоеточия и до запятой выберете поле priority из полученного запроса
	};
	if () { // Внутри круглых скобок выберете поле recordID из полученного запроса
		recordID = ; // После знака равно и до точки с запятой выберете поле recordID из полученного запроса
	} else {
		recordID = false;
	}
	
return {
	apiURI,
	personalToken,
	newTask,
	recordID,
}



Пока ни чего не меняя просто сохраняем;


Запустим проект;

С помощью rest клиента сделаем запрос, вставив в адресную строку адрес из webhook узла;

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

curl --request POST --url [вставьте вместо этих квадратных скобок адресс вашего webhook в проекте Nodul] --header 'Content-Type: application/x-www-form-urlencoded' --header 'Accept: application/json' --data 'name=Send data from Nodul!' --data 'priority=In progress' --data 'status=Medium' --data 'recordID='


Вернёмся к "JS" узлу и отредактируем его;
Проверьте что при установки текстового курсора внутри узла эти данные появляются  в боковом меню. Если их нет, повторите запуск и вызов веб хука;


Подставить в обозначенные места данные которые были отправлены в запросе;


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


Создаём сразу четыре новых узла "HTTP request" для получения списка баз данных;
И в каждый скопируем код ниже и сохраняем, главное не перепутайте их, можете дать каждому прозрачное название;


REQ01 Получение списка баз

curl --request GET --url '[вставьте вместо этих квадратных скобок переменную apiURL из JS узла]/meta/bases' --header 'Accept: application/json' --header 'Authorization: [вставьте вместо этих квадратных скобок подставить personal token]'


REQ02 Получение схемы и содержимого базы

curl --request GET --url '[вставьте вместо этих квадратных скобок переменную apiURL из JS узла]/meta/bases/[ID вашей базы получаемое в запросе REQ01]/tables' --header 'Accept: application/json' --header 'Authorization: [Подставить personal token]'


REQ03 Создание новой записи в таблице задач

curl --request POST --url '[вставьте вместо этих квадратных скобок переменную apiURL из JS узла]/[ID вашей базы получаемое в запросе REQ01]/[ID вашей таблицы получаемое в запросе REQ02]' --header 'Authorization: [Подставить personal token]'
	--header 'Content-Type: application/json'
  --data '{
	    "records": [
	      {
	        "fields": {
	          "Priority": [Подставить переменную priority из JS узла],
	          "Name": [Подставить переменную name из JS узла ],
			  "Status": [Подставить переменную status из JS узла]
	        }
	      }
	    ]
	}'
  


Теперь будем один за другим добавлять в цепочку и вызывать их чтобы настроить получение данных;
Изменяем всё что в квадратных скобках на данные из запросов и других узлов;
В каждый нужно добавить созданный персональный токен;
В тех местах где используется обращение к массивам, укажите нужный индекс, он как и везде начинаются с нуля не смотря что в боковом меню первый будет под номером один;
В запросе на добавление не забудьте проверить что тип метода выбран POST;
Ниже идут скриншоты как каждый из этих узлов должен выглядеть в итоге после всех правок;

После вызова запроса с добавлением записи идём в нашу таблицу Airtable и проверяем что появилась новая задача с текстом "Send data from Nodul!", если нет проверяем каждый запрос по отдельности, возможно где-то не заменили данные, забыли подставить токен;

Удалим эту задачу;
В конец цепочки добавим для удобства узел "Webhook response";
Сделаем чтобы он вернул ID новой созданной записи;

Запустим проект и вызовем Webhook;
Убедимся что в ответ на запрос вернулся объект с record_id;
Вернёмся в нашу табличку с задачами и проверим что она была создана;
Надеюсь у вас тоже всё получилось;

Ссылки:


Основные:


Nodul - https://www.nodul.ru
Nodul список сценарием - https://app.nodul.ru/scenarios
Airtable - https://www.airtable.com
Airtable создание персонального токена (Airtable Developers) - https://airtable.com/create/tokens
Airtable templates или шаблоны - https://www.airtable.com/templates


Информация(документация):


Nodul блог - https://www.nodul.ru/blog
Airtable scopes - https://airtable.com/developers/web/api/scopes
Airtable API - https://airtable.com/developers/web/api/list-bases

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