2012-05-30 3 views
1

Привет, ребята Я действительно борется с перемещением документа из моей корневой папки в другую папку с помощью zend gdata, вот как я пытаюсь это сделать, но не работает.Как переместить документ google в папку с помощью Zend Gdata

$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME; 
$client = Zend_Gdata_ClientLogin::getHttpClient($gUser, $gPass, $service); 
$link = "https://docs.google.com/feeds/documents/private/full/spreadsheet:0AUFNVEpLOVg2U0E"; // Not real id for privacy purposes 
$docs = new Zend_GData_Docs($client); 

// Attach a category object of folder to this entry 
// I have tried many variations of this including attaching label categories 
$cat = new Zend_Gdata_App_Extension_Category('My Folder Name','http://schemas.google.com/docs/2007#folder'); 

$entry = $docs->getDocumentListEntry($link); 
$entry->setCategory(array($cat)); 

$return = $docs->updateEntry($entry,$entry->getEditLink()->href); 

Когда я запускаю это, я получаю Нет ошибок, но ничего не меняется, и возвращаемые данные не содержат новую категорию.

EDIT: Хорошо, я понял, что его не категория, а ссылка, которая решает, какой «коллекция» (папка) ресурс принадлежит тоже. https://developers.google.com/google-apps/documents-list/#managing_collections_and_their_contents говорит, что каждый ресурс имеет как et родительские ссылки, поэтому я попытался изменить свой код, чтобы установить ссылку вместо заданной категории, но это не сработало.

$folder = "https://docs.google.com/feeds/documents/private/full/folder%3A0wSFA2WHc"; 
$rel = "http://schemas.google.com/docs/2007#parent"; 

$linkObj = new Zend_Gdata_App_Extension_Link($folder,$rel,'application/atom+xml', NULL,'Folder Name'); 
$links = $entry->getLink(); 
array_push($links,$linkObj); 
$entry->setLink($links); 

$return = $docs->updateEntry($entry,$entry->getEditLink()->href); 

EDIT: решаемые [почти] OK Вот как переместить/копировать, вроде, из одной папки в другую: проще, чем первоначально предполагалось, но проблема создает ссылку и НЕ переехать! В настоящее время в обоих местах одновременно ....

// Folder you want to move too 
$folder = "https://docs.google.com/feeds/folders/private/full/folder%asdsad"; 
$data = $docs->insertDocument($entry, $folder); // Entry is the entry you want moved using insert automatically assigns link & category for you... 
+0

Первое: классы Zend_Gdata неактивны, они используют v2 api по адресу https://developers.google.com/google-apps/documents-list/v2/developers_guide_protocol#SearchingDocs, ссылка, которую вы указали, для v3 апи. – RockyFord

+0

Да, я знаю об этом, но эта ссылка - единственная документация, которую я должен продолжать в данный момент, ее все, что я должен попробовать и выяснить, как это сделать, api все еще использует атом, поэтому он все еще работает, его только документы google настолько легки в информации, даже на форуме есть много вопросов о том, как это сделать без удовлетворительных ответов ... https: //groups.google.com/forum/embed/? place = forum/google-documents- список-апи #! форум/Google-документы-список-апи. Я понимаю, что Zend Gdata старше, но он делает все остальное, это просто движение, которое, похоже, является проблемой. – Andre

+0

Думаю, вам просто нужно сделать две операции, создать файл в новой папке, а затем удалить файл из старой папки. см. https://developers.google.com/google-apps/documents-list/v2/developers_guide_protocol#MovingIntoFolders ... Удача – RockyFord

ответ

0

Чтобы скопировать/переместить файл в папку, выполните следующие действия:

$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME; 
$client = Zend_Gdata_ClientLogin::getHttpClient($gUser, $gPass, $service); 
$docs = new Zend_GData_Docs($client); 

$link = "https://docs.google.com/feeds/documents/private/full/spreadsheet:0AUFNVEpLOVg2U0E"; 
$entry = $docs->getDocumentListEntry($link); 
// Folder (Collection you want to move to) 
$folder = "https://docs.google.com/feeds/folders/private/full/folder%asdsad"; 
// Move 
$data = $docs->insertDocument($entry, $folder); 

Теперь некоторые вопросы:

  1. Кажется, что это копия только, это означает, что ее по-прежнему тот же документ имеет только дополнительную категорию и родительскую ссылку (так что теперь она находится в двух местах). Это может объяснить это лучше: https://groups.google.com/forum/embed/?place=forum/google-documents-list-api#!topic/google-documents-list-api/OrLi2JCINw4

Я уверен, что должен быть способ сделать это «чище»/лучше, но по крайней мере он сейчас перемещает его.

Смежные вопросы