1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-31 03:10:45 +02:00

GS: Получить и очистить ячейки

This commit is contained in:
Anton 2024-05-04 15:20:15 +03:00
parent 782c7bbffc
commit 4ea295fb89
3 changed files with 106 additions and 22 deletions

View File

@ -197,20 +197,19 @@
// Параметры:
// Токен - Строка - Токен - token
// Книга - Строка - ID книги - spreadsheet
// Лист - Строка - ID листа - sheet
// СоответствиеЗначений - Соответствие Из КлючИЗначение - Данные заполнения, где ключ это имя ячейки вида A1 - data
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
// ОсновноеИзмерение - Строка - Основное измерение при заполнении диапазона массивом - dim
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
Функция УстановитьЗначенияЯчеек(Знач Токен
, Знач Книга
, Знач Лист
, Знач СоответствиеЗначений
, Знач ОсновноеИзмерение = "COLOUMNS") Экспорт
, Знач Лист = ""
, Знач ОсновноеИзмерение = "COLUMNS") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеЗначений);
Если Не ТипЗнч(СоответствиеЗначений) = Тип("Структура")
@ -220,7 +219,7 @@
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchUpdate";
МассивДанных = СформироватьМассивДанныхЯчеек(СоответствиеЗначений, ОсновноеИзмерение);
МассивДанных = СформироватьМассивДанныхЯчеек(СоответствиеЗначений, ОсновноеИзмерение, Лист);
Параметры = Новый Структура("data,valueInputOption", МассивДанных, "USER_ENTERED");
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
@ -233,25 +232,59 @@
// Очищает значение в ячейках
//
// Параметры:
// Токен - Строка - Токен - token
// Книга - Строка - ID книги - spreadsheet
// Лист - Строка - ID листа - sheet
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для очистки - cells
// Токен - Строка - Токен - token
// Книга - Строка - ID книги - spreadsheet
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для очистки - cells
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
Функция ОчиститьЯчейки(Знач Токен, Знач Книга, Знач Лист, Знач МассивЯчеек) Экспорт
Функция ОчиститьЯчейки(Знач Токен, Знач Книга, Знач МассивЯчеек, Знач Лист = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchClear";
Параметры = Новый Структура();
OPI_Инструменты.ДобавитьПоле("spreadsheetId", Лист , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("clearedRanges", МассивЯчеек, "Массив", Параметры);
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
Параметры = Новый Структура("ranges", МассивЯчеек);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить значения ячеек
// Получает значения ячеек таблицы
//
// Параметры:
// Токен - Строка - Токен - token
// Книга - Строка - ID книги - spreadsheet
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для получения - cells
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
Функция ПолучитьЗначенияЯчеек(Знач Токен, Знач Книга, Знач МассивЯчеек, Знач Лист = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchGet";
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
Первый = Истина;
Для Каждого Ячейка Из МассивЯчеек Цикл
Разделитель = ?(Первый, "?", "&");
URL = URL + Разделитель + "ranges=" + Ячейка;
Первый = Ложь;
КонецЦикла;
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Возврат Ответ;
@ -274,6 +307,14 @@
КонецПроцедуры
Процедура ДобавитьИмяЛиста(Ячейка, Знач Лист)
Если ЗначениеЗаполнено(Лист) Тогда
Ячейка = "'" + Лист + "'!" + Ячейка;
КонецЕсли;
КонецПроцедуры
Функция СоздатьЛист(Знач Наименование)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
@ -285,13 +326,18 @@
КонецФункции
Функция СформироватьМассивДанныхЯчеек(Знач СтруктураЗначений, Знач ОсновноеИзмерение)
Функция СформироватьМассивДанныхЯчеек(Знач СтруктураЗначений, Знач ОсновноеИзмерение, Знач Лист)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
МассивДанных = Новый Массив;
Для Каждого ДанныеЯчейки Из СтруктураЗначений Цикл
ТекущееЗначение = ДанныеЯчейки.Значение;
ТекущийКлюч = ДанныеЯчейки.Ключ;
ДобавитьИмяЛиста(ТекущийКлюч, Лист);
OPI_ПреобразованиеТипов.ПолучитьМассив(ТекущееЗначение);
@ -300,7 +346,7 @@
ТекущийМассив.Добавить(ТекущееЗначение);
OPI_Инструменты.ДобавитьПоле("range" , ДанныеЯчейки.Ключ, "Строка", ТекущиеДанные);
OPI_Инструменты.ДобавитьПоле("range" , ТекущийКлюч , "Строка", ТекущиеДанные);
OPI_Инструменты.ДобавитьПоле("values" , ТекущийМассив , "Массив", ТекущиеДанные);
OPI_Инструменты.ДобавитьПоле("majorDimension", ОсновноеИзмерение, "Строка", ТекущиеДанные);
@ -311,4 +357,15 @@
Возврат МассивДанных;
КонецФункции
Процедура СформироватьМассивИменЯчеек(Знач МассивИмен, Знач Лист)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
Для Н = 0 По МассивИмен.ВГраница() Цикл
ДобавитьИмяЛиста(МассивИмен[Н], Лист);
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@ -150,7 +150,7 @@
НовыйТест(ТаблицаТестов, "ГТ_СоздатьТаблицу" , "Создать таблицу" , Таблицы);
НовыйТест(ТаблицаТестов, "ГТ_ПолучитьТаблицу" , "Получить таблицу" , Таблицы);
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьЯчейки" , "Заполнить ячейки" , Таблицы);
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьОчиститьЯчейки" , "Заполнить/Очистить ячейки" , Таблицы);
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);

View File

@ -2545,11 +2545,11 @@
КонецПроцедуры
Процедура ГТ_ЗаполнитьЯчейки() Экспорт
Процедура ГТ_ЗаполнитьОчиститьЯчейки() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Книга = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GS_Spreadsheet");
Лист = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GS_Sheet");
Лист = "Лист2";
СтруктураЯчеек = Новый Соответствие;
СтруктураЯчеек.Вставить("A1", "Это A1");
@ -2560,10 +2560,37 @@
СтруктураЯчеек.Вставить("A4", "Это A4");
СтруктураЯчеек.Вставить("B1", "Это B1");
СтруктураЯчеек.Вставить("B4", "Это B4");
Результат = OPI_GoogleSheets.УстановитьЗначенияЯчеек(Токен, Книга, Лист, СтруктураЯчеек);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТаблицу");
МассивЯчеек = Новый Массив;
МассивЯчеек.Добавить("B2");
МассивЯчеек.Добавить("A3");
МассивЯчеек.Добавить("B4");
Результат = OPI_GoogleSheets.УстановитьЗначенияЯчеек(Токен, Книга, СтруктураЯчеек, Лист);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьЗначенияЯчеек");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["totalUpdatedCells"]).Равно(СтруктураЯчеек.Количество());
Результат = OPI_GoogleSheets.ПолучитьЗначенияЯчеек(Токен, Книга, МассивЯчеек, Лист);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗначенияЯчеек");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["valueRanges"].Количество()).Равно(МассивЯчеек.Количество());
МассивЯчеек = Новый Массив;
МассивЯчеек.Добавить("B2");
МассивЯчеек.Добавить("A3");
МассивЯчеек.Добавить("B4");
Результат = OPI_GoogleSheets.ОчиститьЯчейки(Токен, Книга, МассивЯчеек, Лист);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьЯчейки");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["clearedRanges"].Количество()).Равно(МассивЯчеек.Количество());
КонецПроцедуры