# Google Documents List Data API の使用法

Google Documents List Data API は、 クライアントアプリケーションから Google Documents にドキュメントをアップロードしたり、 ドキュメントの一覧を Google Data API ("GData") 形式のフィードで取得したりするためのものです。 クライアントアプリケーションからユーザのドキュメントの一覧をリクエストしたり、 ドキュメントの中身を問い合わせたりできます。

Google Documents List API についての詳細は http://code.google.com/apis/documents/overview.html を参照ください。

## ドキュメントの一覧の取得

特定のユーザの Google Documents の一覧を取得するには、docs サービスの getDocumentListFeed メソッドを使用します。 このサービスは Zend_Gdata_Docs_DocumentListFeed オブジェクトを返します。 その中には、認証済みユーザに関連付けられたドキュメントの一覧が含まれます。

    $service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
    $docs = new Zend_Gdata_Docs($client);
    $feed = $docs->getDocumentListFeed();

結果として得られる Zend_Gdata_Docs_DocumentListFeed オブジェクトが、サーバからの応答を表します。 このフィードには Zend_Gdata_Docs_DocumentListEntry オブジェクトの一覧 (`$feed->entries`) が含まれ、 それぞれがひとつの Google Document を表します。

## ドキュメントのアップロード

新しい Google Document を作成するには、 ワープロ文書やスプレッドシート、あるいはプレゼンテーションをアップロードします。 この例はインタラクティブなサンプル Docs.php で、これはライブラリに同梱されています。 これは、ファイルをアップロードした後で、 サーバからその結果の情報を取得して表示するものです。

    /**
     * Upload the specified document
     *
     * @param Zend_Gdata_Docs $docs The service object to use for communicating
     *     with the Google Documents server.
     * @param boolean $html True if output should be formatted for display in a
     *     web browser.
     * @param string $originalFileName The name of the file to be uploaded. The
     *     MIME type of the file is determined from the extension on this file
     *     name. For example, test.csv is uploaded as a comma separated volume
     *     and converted into a spreadsheet.
     * @param string $temporaryFileLocation (optional) The file in which the
     *     data for the document is stored. This is used when the file has been
     *     uploaded from the client's machine to the server and is stored in
     *     a temporary file which does not have an extension. If this parameter
     *     is null, the file is read from the originalFileName.
     */
    function uploadDocument($docs, $html, $originalFileName,
                            $temporaryFileLocation) {
      $fileToUpload = $originalFileName;
      if ($temporaryFileLocation) {
        $fileToUpload = $temporaryFileLocation;
      }

      // Upload the file and convert it into a Google Document. The original
      // file name is used as the title of the document and the MIME type
      // is determined based on the extension on the original file name.
      $newDocumentEntry = $docs->uploadFile($fileToUpload, $originalFileName,
          null, Zend_Gdata_Docs::DOCUMENTS_LIST_FEED_URI);

      echo "New Document Title: ";

      if ($html) {
          // Find the URL of the HTML view of this document.
          $alternateLink = '';
          foreach ($newDocumentEntry->link as $link) {
              if ($link->getRel() === 'alternate') {
                  $alternateLink = $link->getHref();
              }
          }
          // Make the title link to the document on docs.google.com.
          echo "<a href=\"$alternateLink\">\n";
      }
      echo $newDocumentEntry->title."\n";
      if ($html) {echo "</a>\n";}
    }

## ドキュメントのフィードの検索

ドキュメントの一覧を検索するには、 標準的な Google Data API クエリパラメータ を使用します。 カテゴリを使用して、ドキュメントの種類 (ワープロ文書、 スプレッドシート) を絞り込みます。 フルテキストのクエリ文字列を使用して、ドキュメントの全文検索を行います。 ドキュメントの一覧に固有のパラメータについての詳細な情報は、 Documents List Data API リファレンスガイド を参照ください。

### ワープロ文書の一覧の取得

指定した型のすべてのドキュメントを含むフィードを取得することもできます。 たとえば、ワープロ文書の一覧を取得するには、 次のようなカテゴリクエリを使用します。

    $feed = $docs->getDocumentListFeed(
        'http://docs.google.com/feeds/documents/private/full/-/document');

### スプレッドシートの一覧の取得

Google Spreadsheets の一覧を取得するには、 次のようなカテゴリクエリを使用します。

    $feed = $docs->getDocumentListFeed(
        'http://docs.google.com/feeds/documents/private/full/-/spreadsheet');

### テキストクエリの実行

ドキュメントの中身を検索するには、リクエスト内で Zend_Gdata_Docs_Query を使用します。 クエリオブジェクトを使用してクエリ URI を組み立て、 検索する単語をパラメータとして渡します。 これは、ある文字列を含むドキュメントを一覧から探すクエリの例です。

    $docsQuery = new Zend_Gdata_Docs_Query();
    $docsQuery->setQuery($query);
    $feed = $client->getDocumentListFeed($docsQuery);