ドキュメント検索
サーバー上のドキュメントを検索しましょう。タイトル名に含まれるキーワードやドキュメントのタイプから検索が可能です。
以下がドキュメントの検索に関するサンプルコードです。
echo "<a href=\"" . $_SERVER['SCRIPT_NAME'] . "?menu=search\">ドキュメント検索</a><br />"; //【1】 // 各メニューリンク押下時の処理振り分け if(isset($_GET['menu'])) { switch ($_GET['menu']) { // 検索用フォーム表示 print <<<HTML
<h2>ドキュメント検索</h2> <form method="post"> //【2】 キーワード:<input type="text" name="keyword" /> ファイルタイプ:<input type="radio" name="filetype" value="all" checked="" />すべて <input type="radio" name="filetype" value="document" />文書 <input type="radio" name="filetype" value="spreadsheet" />スプレッドシート <input type="radio" name="filetype" value="presentation" />プレゼンテーション <input type="submit" name="search" value="検索" /> <input type="submit" name="cancel" value="キャンセル" /></form> HTML; break; } } // 検索ボタン押下時動作 if(isset($_POST['search'])) { // 検索ワードの設定 //【3】 if(!empty($_POST['keyword'])) { $keyword = "?title=" . urlencode($_POST['keyword']); } else { $keyword = ""; } // ファイルタイプの設定とFeedのURI 【4】 $filetype = $_POST['filetype']; if(strcmp($filetype, "all") == 0) { $feedUri = "http://docs.google.com/feeds/documents/private/full" . $keyword; } else { $feedUri = "http://docs.google.com/feeds/documents/private/full/-/" . $filetype . $keyword; } echo "キーワード【 " . $_POST['keyword'] . " 】、ファイルタイプ【 " . $filetype . " 】の検索結果 "; // フィードの取得 $listFeed = $serviceDocs->getDocumentListFeed($feedUri); showDocumentList($listFeed); }
1. ドキュメント検索リンク
表示やアップロードと同様に、自身のURLにパラメータ「search」を与えたリンクを作成します。
2. リンクメニューの振り分け
1.のリンクからパラメータを取得し、「search」であった場合、検索用のフォームを表示します。
ファイル名のキーワード用のテキストフォームと、文書の種類を選択するラジオボタンを作成します。
3. 検索ワードの設定
検索フォームのキーワード欄に入力されたデータを取得します。
タイトルを検索する場合にはフィードを要求するURLの末尾に「?title=○○○」を付与します。アップロードの際と同様に日本語に対応するためにurlencodeメソッドを使用しています。
今回はタイトルの検索ですが他に次のような検索も可能です。
付与する文字列 | 値 | 検索できる内容 |
?q | 文字列 | ドキュメント本文中に指定した文字列を含むドキュメント |
?title | 文字列 | ドキュメントのタイトルに指定した文字列を含むドキュメント |
?title-exact | true/false | titleと共に使用。trueの場合は完全一致するドキュメントが検索される |
今回のサンプルでは対応しておりませんが、半角スペースは「+」に置き換ることで検索できます。例えば「coffee shop」であれば「coffee+shop」とします。
4. ファイルタイプの設定とFeedのURI
フォームで指定されたドキュメントの種類によってフィードを要求するURIを編集します。
次のようにフィードを要求するURIによって取得できるドキュメントの種類が変わります。
ドキュメントの種類 | URI |
すべて | http://docs.google.com/feeds/documents/private/full |
文書 | http://docs.google.com/feeds/documents/private/full/-/document |
スプレッドシート | http://docs.google.com/feeds/documents/private/full/-/spreadsheet |
プレゼンテーション | http://docs.google.com/feeds/documents/private/full/-/presentation |
削除済みドキュメント | http://docs.google.com/feeds/documents/private/full/-/trashed |
スター付きドキュメント | http://docs.google.com/feeds/documents/private/full/-/presentation/starred |
まとめ
いかがでしょうか。Zend_Gdata_Docsについて解説を行いました。本連載も4回目となりましたが、Zend_Gdata_YouTubeやZend_Gdata_Calendarと基本はほとんど同じことが分かりましたでしょうか。
次回はGoogle Spreadsheetsを扱うZend_Gdata_Spreadsheetsを解説します。サーバ上でエクセルやCSVといったドキュメントを操作できるサービスです。