1

こんにちはみんな zend gdata here を使用してルートフォルダーから別のフォルダーにドキュメントを移動するのに本当に苦労していますが、それをやろうとしているのですが、うまくいきません。

$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);

これを実行するとエラーは発生しませんが、何も変わらないようで、戻りデータには新しいカテゴリが含まれていません。

編集: わかりました、カテゴリではなく、リソースがどの「コレクション」(フォルダー) に属するかを決定するリンクであることに気付きました。https://developers.google.com/google-apps/documents-list/#managing_collections_and_their_contentsは、各リソースには親リンクのセットがあると言うので、コードを変更して、カテゴリを設定する代わりにリンクを設定しようとしましたが、そうではありませんでした仕事。

$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);

編集:解決済み[ほぼ] 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...
4

1 に答える 1

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. 参照コピーのみを作成しているようです。これは、追加のカテゴリと親リンクがあるだけで、同じドキュメントであることを意味します (したがって、現在は 2 か所にあります)。これはそれをよりよく説明するかもしれません: https://groups.google.com/forum/embed/?place=forum/google-documents-list-api#!topic/google-documents-list-api/OrLi2JCINw4

「よりクリーン」/より良い方法があるに違いないと確信していますが、少なくとも今のところ移動します。

于 2012-06-03T11:12:02.537 に答える