SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

ドキュメント検索

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

図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といったドキュメントを操作できるサービスです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Zend FrameworkでGoogleアプリケーションを使い倒す連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4036 2009/07/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング