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

18.03.24

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

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

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

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

 

Открытый Пакет Интеграций (ОПИ) - это набор open-source библиотек для интеграции с некоторыми популярными API для 1С:Предприятие и OneScript. Он представляет из себя расширение (а для OneScript - пакет), состоящее из общих модулей, каждый из которых отвечает за свой собственный сервис для работы. 


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

 

 

 

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

 

 

 

 

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

 

На момент последнего обновления данной статьи, доступны следующие 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/tag/1.5.0

 

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

 

 

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

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

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15994    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

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

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18007    9    15    

14

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12936    32    8    

11

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    85044    26    51    

50

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС 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    89248    163    217    

320
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1206 02.04.24 16:58 Сейчас в теме
(3)Да, была проблема - 1С-ная ЗаписьДанных не может проглотить такие большие двоичные данные для записи в тело запроса. Пока решения еще найдено не было.
5. bayselonarrend 1206 02.04.24 17:02 Сейчас в теме
(3) Если не слишком срочно, могу посмотреть в течении пары дней
6. alkar 90 03.04.24 15:51 Сейчас в теме
Было бы не плохо, очень ждём! Спасибо.
7. bayselonarrend 1206 03.04.24 16:21 Сейчас в теме
(6) Я как-то сразу не сообразил - вы про 1Сную версию говорите или про OneScript?

Кто-то уже писал про такую проблему на OS версии, а на 1Ске я вчера пробовал загрузить 10гб zip - у меня выпало "Превышено время ожидания", но не поток
8. alkar 90 04.04.24 09:41 Сейчас в теме
9. bayselonarrend 1206 04.04.24 09:46 Сейчас в теме
(8) Я еще посмотрю разные варианты, но пока я попытался разбить 10 гб файл на части - OneScript сожрал 12 гб оперативы и вылетел в BSOD :) В статье про Яндекс.Диск говорили, что это тех. ограничение платформы - возможно намеренное, чтобы такого не случалось
10. bayselonarrend 1206 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 1206 09.04.24 10:42 Сейчас в теме
(12)Посмотрю. Только большая просьба кинуть это в Issues на гитхабе

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

А то я потом по комментариям из разных статей это все не соберу (историю ошибок в смысле)
14. bayselonarrend 1206 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 1206 09.04.24 12:49 Сейчас в теме
Оставьте свое сообщение