CodeZine(コードジン)

特集ページ一覧

PHPアプリケーションからGoogle Document Listを利用しよう

Zend FrameworkでGoogleアプリケーションを使い倒す(4)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

ドキュメント検索

 サーバー上のドキュメントを検索しましょう。タイトル名に含まれるキーワードやドキュメントのタイプから検索が可能です。

図6:ドキュメント検索
図6:ドキュメント検索

 以下がドキュメントの検索に関するサンプルコードです。

[リスト8]index.php(抜粋)
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
ドキュメントの種類 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といったドキュメントを操作できるサービスです。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Zend FrameworkでGoogleアプリケーションを使い倒す

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 森山 絵美 (モリヤマ エミ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5