Библиотека для работы с Google Drive API (open-source)

25.01.25

Интеграция - WEB-интеграция

Новая небольшая библиотека в составе Открытого пакета интеграций для работы с Google Drive. Поддерживает работу с файлами, каталогами и комментариями

Если вы не слышали ранее об Открытом Пакете Интеграций (что вполне вероятно), то небольшая вводная часть ниже, под катом. Для тех, кто уже знаком с ОПИ, данный раздел можно пропустить.

 
 Что такое Открытый Пакет Интеграций

 

Открытый Пакет Интеграций (ОПИ) - это open-source набор методов для простой и быстрой интеграции с различными популярными API. Он состоит из аналогичных по функционалу 1С-расширения (CFE), OS-пакета и программы для Windows и Linux, которые предоставляют готовые функции для работы с целым набором различных онлайн-сервисов.


  • ОПИ бесплатен и имеет открытый исходный код на GitHub. Вы всегда можете получить последнюю версию библиотеки на странице репозитория, а подписавшись - узнавать о выходе обновлений. Все релизы сопровождаются статьями на Инфостарт и разделами единой документации. На Инфостарт вы можете подписаться уже хоть сейчас, а про документацию я расскажу далее.

 

 

 

  • Удобная единая документация. Она расположена на сайте opi.neocities.org и содержит в себе всю информацию, необходимую для работы: инструкции по предварительным действиям для начала интеграции, описания всех методов с параметрами и возвращаемыми значениями, примеры кода и т.д. Каждый API имеет там свой раздел.

 

 

 

 

  • Простая установка. ОПИ распространяется во множестве вариантах: как XML файлы расширения, как EDT проект расширения, как файл расширения формата .cfe (версия 1С 8.3.9), как файл пакета для OneScript и еще в целом наборе пакетов и файлов для Windows и Linux. Из этого набора вы всегда сможете выбрать тот способ установки, который лучше подойдет для вашей конкретной задачи

 

На момент последнего обновления данной статьи, доступны следующие API:

Наиболее актуальную информацию можно посмотреть в репозитории или на вводной странице документации.

 

Google Drive - популярное облачное хранилище, один из сервисов Google Workspace. В этом обновлении были добавлены основные методы, позволяющие с ним взаимодействовать посредством API

 

Реализованные методы:

  • Работа с файлами и папками
    • Получение информации об объекте
    • Получение списка каталогов
    • Получение списка файлов
    • Загрузка файлов
    • Копирование файлов
    • Обновление двоичных данных существующих файлов
    • Скачивание (получение двоичных данных) файлов
    • Создание каталогов
    • Удаление объектов
  • Работа с комментариями
    • Получение комментария по ID
    • Получение списка комментариев объекта
    • Создание комментария
    • Удаление комментария

 

Применение их, в целом и по смыслу, совпадает с таковыми у библиотеки для работы с Yandex Disk. API Яндекса мне нравится больше и функционал там шире, но вы можете выбрать (или даже уже используете) тот сервис, который вам более удобен - теперь они тут есть оба, а основные функции, будь то загрузить, скачать или удалить ничем особенно не отличаются. Зацеплю лишь некоторые основные моменты.

 

Общие токены на сервисы Google Workspace

 

До сегодняшнего релиза в Открытом пакете интеграций уже была библиотека из набора сервисов Google - это библиотека для планировщика Google Calendar. Если вы использовали её, то наверняка проходили довольно длинный и муторный процесс первоначальной регистрации и настройки всего необходимого перед началом работы, который описан в документации.

Повторять весь процесс целиком для вас, конечно же, будет не нужно - достаточно лишь выполнить два последних пункта: активировать API Google Drive и заново получить токен по ссылке из функции OPI_GoogleWorkspace.СформироватьСсылкуПолученияКода().

 

Важно

В зависимости от того, какие сервисы вы используете, зависит и количество необходимых разрешений при формировании ссылки получения токена. Определяется это параметрами функции СформироватьСсылкуПолученияКода - Calendar и Drive (на данный момент).

Разрешения тех API, которые вы не используете, необходимо передать как Ложь - значения по умолчанию для всех библиотек равны Истина
 


Данная функция не является методом для частого использования - она необходима лишь для стартовой настройки и потом больше не применяется. Так что, думаю, проблем с этим возникнуть не должно

 

Осторожное использование рекурсивных методов

 

Методы, отвечающие за получение списков объектов, а именно ПолучитьСписокКаталогов и ПолучитьСписокФайлов, рекурсивно отправляют запросы к Google Workspace до тех пор, пока те не закончатся.

Выполнение данных методов без отборов, в частности на дисках с большим количество файлов, может привести к тому, что а) все будет получаться очень долго, а найти в полученном ответе из тысяч файлов что-либо будет крайне сложно б) будет съедено очень много квоты выполнения запросов к сервису

Так что, несмотря на необязательность параметров отбора, таких как ИмяСодержит и Каталог, выполнять функции без них не рекомендуется (пусть и не воспрещается).

 

 

Блок работы с комментариями

 

Если с первой частью библиотеки, которая отвечает за работу с файлами и каталогами, все вполне понятно, то про комментарии лично я не знал до того, как увидел их описание в документации к API. Ничего сложного или невероятного в данном в функционале нет, остановимся на нем лишь вкратце.

Комментарии в Google Drive - небольшие текстовые заметки, которые можно оставлять применимо к файлам, лежащим на облачном диске. Нас они, в первую очередь, могут заинтересовать возможностью взаимодействия между пользователем из 1С и пользователем, который работает лишь напрямую с Drive через приложение или web-интерфейс.

Например, мы можем оставить комментарий через API из 1С по какому либо событию. Делается это вот таким простым кодом:

 

  Идентификатор = "1rCyOc4A8VYw7DM3HV55P9BuKWayJOSvW";
  Комментарий   = "Новый комментарий"; 

  Ответ = OPI_GoogleDrive.СоздатьКомментарий(Токен, Идентификатор, Комментарий);

 

И теперь этот комментарий будет виден всем пользователям, у которых есть доступ к файлу на диске

 

 

В свою очередь, комментарий, добавленный руками напрямую, может быть получен назад из 1С. Делается это также просто:

 

    ИДФайла = "1rCyOc4A8VYw7DM3HV55P9BuKWayJOSvW";
    Ответ   = OPI_GoogleDrive.ПолучитьСписокКомментариев(Токен, ИДФайла);

 

Ничего особенного, но применение можно найти.

 

Немного новостей проекта

 

Про новую библиотеку рассказать больше особо нечего: методы как методы, API как API - все как всегда есть в документации



 

Расскажу немного про сам проект ОПИ. Последнее время я занимаюсь автоматизацией некоторых часто повторяющихся монотонных действий, которые приходится совершать в процессе разработки библиотеки.

Я уже рассказывал про автотесты в статье про портирование Открытого пакета интеграций на OneScript, но сейчас, помимо этого, сам процесс "внутренней кухни" поддержки двух схожих кодовых баз - 1С и OneScript - перенесен на Github Actions. А значит его видно теперь и снаружи.

 

 

Я обязательно посвящу этому отдельную статью, где расскажу, что это такое и зачем оно нужно, но, если вы уже некоторым образом в теме, то есть отдельные моменты, которые могут быть вам интересны уже сейчас. В частности, в моем workflow есть примеры реализации таких вещей как:
 

  • Выполнение кода на OneScript внутри Github Actions для преобразования структуры кода проекта EDT в структуру кода пакета OneScript. В самом скрипте ничего особенного нет - на 1С же, но вот с кодом самого описания процесса запуска уже все не так однозначно.

    Не буду пока подробно его разбирать, скажу лишь, что сама возможность запуска OneScript внутри Github Actions - это очень здорово. Будущее наступило, так сказать :)
     
     
     Простой запуск OS скрипта для примера



     
  • Выполнение тестирования asserts через 1testrunner. Прописано оно достаточно топорно, но это в угоду подробности логирования 


     
  • Принцип хранения, расшифровки и последующего шифрования данных, применяемых в тестах.

    Смысл таков, что в репозитории хранится зашифрованный json с различными токенами и ключами. В процессе тестирования он расшифровывается, служит источником информации для тестов (тесты также могут записывать в него новую информацию - например, обновленные токены), после чего шифруется обратно и сохраняется в репозитории. Шифрование и расшифровка реализованы при помощи gpg.
     
  • Пример передачи файлов-артефактов между процессами. Это необходимо в тех случаях, когда один и тот же файл должен передаваться между различными процессами обработки. У меня так, например, передается тот файл с ключами и токенами между процессами Расшифровка -> Тестирование -> Шифрование

 

Если же Github Actions вам пока ни о чем не говорит, то данный блок, тем не менее, может быть интересен в других двух случаях 
 

  • При создании форков этот workflow переходит в новый репозиторий, а значит его также можно использовать в своем ответвлении. Шаблон файла данных для тестирования я добавлю чуть позже.
  • Если какой-то момент в использовании библиотеки остается для вас непонятным по документации, то глядя одним глазом в файл тестов, а другим - в результаты их выполнения внутри GA, можно получить прямой актуальный пример "программный код -> результат выполнения"

    Код библиотеки для 1С и код библиотеки для OneScript - это один и тот же код, так что результаты этих тестов релевантны для обеих библиотек
     

 

Тестирование запускается довольно часто, а значит данные в результатах всегда будут актуальны.

Не всегда, правда, весь процесс тестирования целиком выполняется успешно, но только лишь по причине постоянных временных блокировок меня различными сервисами за чрезмерное их использование :Р

 

Так или иначе, теперь процесс тестирования стал более прозрачным для вас, а процесс сборки релизов - простым для меня. Посмотреть на это все можно по ссылке.

Ну а пока все.

 

Спасибо за внимание!

 

 

Репозиторий ОПИ: github.com/Bayselonarrend/OpenIntegrations

Последний релиз: github.com/Bayselonarrend/OpenIntegrations/releases/latest

 

Другие статьи про Открытый пакет интеграций на Инфостарт:

 

 

 Мой GitHub:     https://gitub.com/Bayselonarrend 
 Лицензия MIT:   https://mit-license.org

Google Drive Google Drive Google Диск api облако облачное хранилище web интеграция workspace

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1504    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18555    20    22    

18

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 1C:Бухгалтерия Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20695    13    19    

18

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    454    2    0    

5

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    92150    184    217    

337
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. seperblunt 18.03.24 16:48 Сейчас в теме
2. dmfaleleev 25 18.03.24 18:44 Сейчас в теме
Огонь! Спасибо большое за ваш труд
3. alkar 90 02.04.24 16:33 Сейчас в теме
Подскажите, может кто то сталкивался? пытаюсь с помощью данной библиотеки отправить файл ~8 гб на google disk получаю ошибку "Превышена допустимая длина потока."
4. bayselonarrend 2385 02.04.24 16:58 Сейчас в теме
(3)Да, была проблема - 1С-ная ЗаписьДанных не может проглотить такие большие двоичные данные для записи в тело запроса. Пока решения еще найдено не было.
5. bayselonarrend 2385 02.04.24 17:02 Сейчас в теме
(3) Если не слишком срочно, могу посмотреть в течении пары дней
6. alkar 90 03.04.24 15:51 Сейчас в теме
Было бы не плохо, очень ждём! Спасибо.
7. bayselonarrend 2385 03.04.24 16:21 Сейчас в теме
(6) Я как-то сразу не сообразил - вы про 1Сную версию говорите или про OneScript?

Кто-то уже писал про такую проблему на OS версии, а на 1Ске я вчера пробовал загрузить 10гб zip - у меня выпало "Превышено время ожидания", но не поток
8. alkar 90 04.04.24 09:41 Сейчас в теме
9. bayselonarrend 2385 04.04.24 09:46 Сейчас в теме
(8) Я еще посмотрю разные варианты, но пока я попытался разбить 10 гб файл на части - OneScript сожрал 12 гб оперативы и вылетел в BSOD :) В статье про Яндекс.Диск говорили, что это тех. ограничение платформы - возможно намеренное, чтобы такого не случалось
10. bayselonarrend 2385 06.04.24 16:00 Сейчас в теме
(8)Ну вроде что-то получилось.

https://github.com/Bayselonarrend/OpenIntegrations/releases/tag/1.5.2

Процесс загрузки не быстрый - 10 гб где то час - час 15 загружалось (что в версии для 1С, что в версии для OS). Но 99% времени - отправка http запроса (которая уже непосредственно Соединение.ВызватьHTTPМетод), так что тут мои полномочия все. Наверняка на это еще скорость интернета влияет и при действительно быстром соединении будет быстрее.

Функция библиотеки не поменялась - она сама определит большой файл и пустит его по новой ветке
11. alkar 90 07.04.24 09:33 Сейчас в теме
(10) Спасибо, будем пробовать, сообщу результат.
bayselonarrend; +1 Ответить
12. alkar 90 09.04.24 10:34 Сейчас в теме
Посмотрел, загрузка идёт(скриншот) но по итогу файл в google drive не появляется. Хотя маленький файл загружается без проблем и я его вижу в google.
Прикрепленные файлы:
bayselonarrend; +1 Ответить
13. bayselonarrend 2385 09.04.24 10:42 Сейчас в теме
(12)Посмотрю. Только большая просьба кинуть это в Issues на гитхабе

https://github.com/Bayselonarrend/OpenIntegrations/issues

А то я потом по комментариям из разных статей это все не соберу (историю ошибок в смысле)
14. bayselonarrend 2385 09.04.24 10:59 Сейчас в теме
(12)Хотя я кажется подозреваю, почему не вышло. В MIME должен быть не octet (он сам там проставится), а MIME type конечного файла, типа image/jpeg. Скорее всего Drive не понимает, какого типа ему файл сохранить, поэтому и не работает.
15. alkar 90 09.04.24 11:07 Сейчас в теме
ок, перенесу Issues. А для bak(архив SQl) файла, какой MIME можно указать?
16. bayselonarrend 2385 09.04.24 12:49 Сейчас в теме
Оставьте свое сообщение