Пример работы с Google Documents List Data API


Простой пример работы с Google Docs из 1С V8.
Рассмотрены только некоторые простые операции: получение списка документов/коллекций, загрузка документа на сервер, установка прав доступа, удаление документа.

Это простой пример работы с Google Docs из 1С V8.

Рассмотрены только некоторые простые операции: получение списка документов/коллекций, загрузка документа на сервер, установка прав доступа, удаление документа.

Модификация документов средствами API мне не требовалась, и поэтому делать не пробовал.


Первым делом получаем идентификатор/параметр авторизации (authentication token)

ФайлИд = ПолучитьИмяВременногоФайла();  
Соединение = Новый HTTPСоединение("www.google.com", , , , , Истина);
Соединение.Получить("accounts/ClientLogin?accountType=GOOGLE&service=writely&source=1C&Email=" + ИмяПользователя + "&Passwd=" + Пароль, ФайлИд);

//writely,wise 
ФайлОтвета = Новый ТекстовыйДокумент;
ФайлОтвета.Прочитать(ФайлИд, "utf-8");
ПараметрАвторизации = ФайлОтвета.ПолучитьСтроку(3);

А дальше пытаемся управлять сервисом с помощью методов HTTPСоединения: ОтправитьДляОбработки(Put), Получить(Get), Удалить(Delete).


Например, чтобы опубликовать документ Excel

Файл = Новый Файл(ИсточникИмяФайла);
РазмерФайла = Файл.Размер();
ИмяФайла = Файл.Имя;
Файл = Неопределено;

СайтУРЛ = "docs.google.com";
УРЛ = "feeds/default/private/full";
РезультатИмяФайла = ПолучитьИмяВременногоФайла();
//ПараметрАвторизации = ПолучитьПараметрАвторизации(); 

Соединение = Новый HTTPСоединение(СайтУРЛ, , , , , Истина);//"spreadsheets0.google.com"

Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "GoogleLogin auth=" + Сред(ПараметрАвторизации, 6));
Заголовки.Вставить("GData-Version", "3.0");
Заголовки.Вставить("Content-Length", Формат(РазмерФайла, "ЧГ="));
Заголовки.Вставить("Content-Type", "application/vnd.ms-excel");
Заголовки.Вставить("Slug", ИмяФайла);

//Теперь можно отправлять GET или POST запросы гугловскому API.
//Отправка POST Запроса
Соединение.ОтправитьДляОбработки(ИсточникИмяФайла, УРЛ, РезультатИмяФайла, Заголовки);

В результате выполнения команды получаем XML-документ (структура файла документирована).

Из файла ответа можно вытащить идентификатор ресурса (resourceId), выглядит как строка вида «0ApemGBzasF4MdC1WaEE1UGxDYjlnWUxDdTRlbDZzdEU».

Если нужно добавить документ в существующую коллекцию (папку), то URL должен содержать идентификатор папки

УРЛ = "feeds/default/private/full" + "/folder%3A0B5emGBzasF4MZmViYTJjNmMtNGI0ZS00YmMzLWIzYmYtYzIzMDhlYmUwMzlR/contents";
//Здесь «0B5emGBzasF4MZmViYTJjNmMtNGI0ZS00YmMzLWIzYmYtYzIzMDhlYmUwMzlR» это идентификатор папки.

А теперь удалим документ

СайтУРЛ = "docs.google.com";
УРЛ = "feeds/default/private/full/" + ИдентификаторДокумента + "";//?delete=true
//ПараметрАвторизации = ПолучитьПараметрАвторизации(); 
Соединение = Новый HTTPСоединение(СайтУРЛ, , , , , Истина);//"spreadsheets0.google.com"

Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "GoogleLogin auth=" + Сред(ПараметрАвторизации, 6));
Заголовки.Вставить("If-Match", "*");//If-Match: 
Заголовки.Вставить("GData-Version", "3.0");

//Теперь можно отправлять GET или POST, DELETE запросы гугловскому API.
Соединение.Удалить(УРЛ, Заголовки);//feeds/spreadsheets/private/full

Получим список документов (и коллекций)

СайтУРЛ = "docs.google.com";
УРЛ = "feeds/default/private/full";
//УРЛ = "feeds/default/private/full/-/folder";
//GET /feeds/default/private/full/-/folder
//GET /feeds/default/private/full?showfolders=true

РезультатИмяФайла = ПолучитьИмяВременногоФайла();
//ПараметрАвторизации = ПолучитьПараметрАвторизации(); 

Соединение = Новый HTTPСоединение(СайтУРЛ, , , , , Истина); //"spreadsheets0.google.com"

Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "GoogleLogin auth=" + Сред(ПараметрАвторизации, 6));
Заголовки.Вставить("GData-Version", "3.0");

//Теперь можно отправлять GET или POST запросы гугловскому API.
//Например получение списка spreadsheets через GET:
Соединение.Получить(УРЛ, РезультатИмяФайла, Заголовки); //feeds/spreadsheets/private/full

Подробности смотреть в http://code.google.com/intl/ru-RU/apis/documents/docs/3.0/developers_guide_protocol.html

 
Обработка для 1C 8.2 во вложении к публикации - это просто заготовка, на которой изучалась/проверялась работа с API.


PS: Google Docs & Spreadsheets (сервисы writely, wise) изначально разные продукты (созданные в разное время), похоже Google немножко менял API и некоторые примеры из интернета не работают.

Файлы обработки:

-