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 Родителя
|
// Родитель - Строка - ID Родителя
|
||||||
// РодительБаза - Булево - Истина, если родитель - база, Ложь - если страница
|
// Заголовок - Строка - Заголовок страницы
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - Ответ сервера Notion
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - Ответ сервера Notion
|
||||||
Функция СоздатьСтраницу(Знач Токен, Знач Заголовок, Знач Родитель, Знач РодительБаза = Ложь) Экспорт
|
Функция СоздатьСтраницу(Знач Токен, Знач Родитель, Знач Заголовок) Экспорт
|
||||||
|
|
||||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||||
Родитель = ИдентификацияРодителя(Родитель, РодительБаза);
|
|
||||||
Свойства = Новый Структура;
|
Свойства = Новый Структура;
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
ДобавитьЗаголовокСтраницы(Заголовок, Свойства);
|
ДобавитьЗаголовокСтраницы(Заголовок, Свойства);
|
||||||
|
ДобавитьРодителяСтраницы(Родитель, Ложь, Параметры);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
|
||||||
Параметры.Вставить("parent" , Родитель);
|
|
||||||
Параметры.Вставить("properties", Свойства);
|
Параметры.Вставить("properties", Свойства);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://api.notion.com/v1/pages", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post("https://api.notion.com/v1/pages", Параметры, Заголовки);
|
||||||
@ -40,11 +38,57 @@
|
|||||||
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Notion
|
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера 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");
|
ПолеИдентификатора = ?(РодительБаза, "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