mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-21 01:50:24 +02:00
Notion API: Создание базы
This commit is contained in:
parent
65f864f56d
commit
eea51d2139
@ -2,26 +2,24 @@
|
||||
|
||||
#Область РаботаСоСтраницами
|
||||
|
||||
// Создать дочернюю страницу
|
||||
// Создать дочернюю страницу над другой страницей-родителем
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// Заголовок - Строка - Заголовок страницы
|
||||
// Родитель - Строка - ID Родителя
|
||||
// РодительБаза - Булево - Истина, если родитель - база, Ложь - если страница
|
||||
// Заголовок - Строка - Заголовок страницы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - Ответ сервера Notion
|
||||
Функция СоздатьСтраницу(Знач Токен, Знач Заголовок, Знач Родитель, Знач РодительБаза = Ложь) Экспорт
|
||||
Функция СоздатьСтраницу(Знач Токен, Знач Родитель, Знач Заголовок) Экспорт
|
||||
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
Родитель = ИдентификацияРодителя(Родитель, РодительБаза);
|
||||
Свойства = Новый Структура;
|
||||
Параметры = Новый Структура;
|
||||
|
||||
ДобавитьЗаголовокСтраницы(Заголовок, Свойства);
|
||||
ДобавитьРодителяСтраницы(Родитель, Ложь, Параметры);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("parent" , Родитель);
|
||||
Параметры.Вставить("properties", Свойства);
|
||||
|
||||
Ответ = OPI_Инструменты.Post("https://api.notion.com/v1/pages", Параметры, Заголовки);
|
||||
@ -40,11 +38,57 @@
|
||||
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Notion
|
||||
Функция ПолучитьСтраницу(Знач Токен, Знач Родитель) Экспорт
|
||||
|
||||
PID = "page_id";
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
Родитель = ИдентификацияРодителя(Родитель, Ложь);
|
||||
ПреобразоватьИД(Родитель);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("https://api.notion.com/v1/pages/" + Родитель[PID], , Заголовки);
|
||||
Ответ = OPI_Инструменты.Get("https://api.notion.com/v1/pages/" + Родитель, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСБазамиДанных
|
||||
|
||||
// Создать базу данных страниц
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// Родитель - Строка - ID страницы родителя
|
||||
// Заголовок - Строка - Заголовок базы данных
|
||||
// Свойства - Структура Из Строка - Свойства базы данных
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - Ответ сервера Notion
|
||||
Функция СоздатьБазуДанных(Знач Токен, Знач Родитель, Знач Заголовок, Знач Свойства = "") Экспорт
|
||||
|
||||
// Пример структуры/соответствия свойств
|
||||
|
||||
// Имя : title
|
||||
// Описание : rich_text
|
||||
// В работе : checkbox
|
||||
// Количество : number
|
||||
// Дата : date
|
||||
// Статус : Соответствие
|
||||
// Активный : green
|
||||
// Неактивный : red
|
||||
// Архив : yellow
|
||||
|
||||
//Все страницы, которые будут созданы как дочерние, должны иметь свойства базы-родителя
|
||||
|
||||
Если Не ТипЗнч(Свойства) = Тип("Структура") И Не ТипЗнч(Свойства) = Тип("Соответствие") Тогда
|
||||
Свойства = Новый Структура("Наименование", "title");
|
||||
КонецЕсли;
|
||||
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
Параметры = Новый Структура;
|
||||
|
||||
ДобавитьРодителяБазы(Родитель, Ложь, Параметры);
|
||||
ДобавитьЗаголовокБазы(Заголовок, Параметры);
|
||||
ДобавитьСвойстваБазы(Свойства, Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Post("https://api.notion.com/v1/databases", Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -83,16 +127,29 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ИдентификацияРодителя(Знач Родитель, Знач РодительБаза)
|
||||
Процедура ДобавитьРодителяСтраницы(Знач Родитель, Знач РодительБаза, ОсновнаяСтруктура)
|
||||
|
||||
ПреобразоватьИД(Родитель);
|
||||
|
||||
ПолеИдентификатора = ?(РодительБаза, "database_id", "page_id");
|
||||
СтруктураРодителя = Новый Структура(ПолеИдентификатора, Родитель);
|
||||
|
||||
Возврат СтруктураРодителя;
|
||||
ОсновнаяСтруктура.Вставить("parent", СтруктураРодителя);
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьРодителяБазы(Знач Родитель, Знач РодительБаза, ОсновнаяСтруктура)
|
||||
|
||||
ПреобразоватьИД(Родитель);
|
||||
|
||||
ПолеИдентификатора = ?(РодительБаза, "database_id", "page_id");
|
||||
СтруктураРодителя = Новый Структура();
|
||||
СтруктураРодителя.Вставить("type" , ПолеИдентификатора);
|
||||
СтруктураРодителя.Вставить(ПолеИдентификатора, Родитель);
|
||||
|
||||
ОсновнаяСтруктура.Вставить("parent", СтруктураРодителя);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьЗаголовокСтраницы(Знач Заголовок, ОсновнаяСтруктура)
|
||||
|
||||
@ -117,4 +174,69 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьЗаголовокБазы(Знач Заголовок, ОсновнаяСтруктура)
|
||||
|
||||
СтруктураДанных = Новый Структура;
|
||||
СтруктураТекста = Новый Структура;
|
||||
МассивДанных = Новый Массив;
|
||||
|
||||
СтруктураТекста.Вставить("content", Заголовок);
|
||||
СтруктураТекста.Вставить("link" , Неопределено);
|
||||
|
||||
СтруктураДанных.Вставить("type", "text");
|
||||
СтруктураДанных.Вставить("text", СтруктураТекста);
|
||||
|
||||
МассивДанных.Добавить(СтруктураДанных);
|
||||
|
||||
ОсновнаяСтруктура.Вставить("title", МассивДанных);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьСвойстваБазы(Знач Свойства, ОсновнаяСтруктура)
|
||||
|
||||
Если Свойства.Количество() = 0 Тогда
|
||||
ОсновнаяСтруктура.Вставить("properties", Новый Структура);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствиеПараметров = Новый Соответствие;
|
||||
|
||||
Для Каждого Свойство Из Свойства Цикл
|
||||
|
||||
Если ТипЗнч(Свойство.Значение) = Тип("Строка") Тогда
|
||||
|
||||
СоответствиеПараметров.Вставить(Свойство.Ключ, Новый Структура(Свойство.Значение, Новый Структура));
|
||||
|
||||
ИначеЕсли ТипЗнч(Свойство.Значение) = Тип("Структура")
|
||||
Или ТипЗнч(Свойство.Значение) = Тип("Соответствие") Тогда
|
||||
|
||||
ВыборЗначения = СформироватьЗначенияВыбора(Свойство.Значение);
|
||||
СоответствиеПараметров.Вставить(Свойство.Ключ, Новый Структура("select", ВыборЗначения))
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОсновнаяСтруктура.Вставить("properties", СоответствиеПараметров);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СформироватьЗначенияВыбора(Знач СтруктураВариантов)
|
||||
|
||||
МассивВариантов = Новый Массив;
|
||||
|
||||
Для Каждого Вариант Из СтруктураВариантов Цикл
|
||||
|
||||
СоответствиеВарианта = Новый Соответствие;
|
||||
СоответствиеВарианта.Вставить("name", Вариант.Ключ);
|
||||
СоответствиеВарианта.Вставить("color", Вариант.Значение);
|
||||
|
||||
МассивВариантов.Добавить(СоответствиеВарианта);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Новый Структура("options", МассивВариантов);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
Loading…
Reference in New Issue
Block a user