SHOEISHA iD

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

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

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

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

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

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

ドキュメントサービスの取得

 Zend_Gdata_Docsのコンストラクタを生成します。前回のGoogle Calendarと同様に、引数に認証済みのHTTPクライアントを与えることで、Documentサービスを取得します。

[リスト2]index.php(抜粋)
// Documentsサービスのインスタンス作成
$serviceDocs = new Zend_Gdata_Docs($client);

ドキュメントの一覧表示

 まずはサーバ上のドキュメントの一覧を取得、表示しましょう。

図3:ドキュメント一覧表示
図3:ドキュメント一覧表示

 一覧上に表示されたドキュメント名のリンクをクリックするとそのまま編集を行うことができます。

図4:ドキュメント編集
図4:ドキュメント編集

 以下がドキュメントの一覧表示に関するサンプルコードです。

[リスト3]index.php(抜粋)
echo "<a href=\"" . $_SERVER['SCRIPT_NAME'] . "?menu=show\">ドキュメント一覧</a><br />"; //【1】

// 各メニューリンク押下時の処理振り分け
if(isset($_GET['menu'])) {
    switch ($_GET['menu']) {
        case 'show': //【2】
            echo "<h2>ドキュメント一覧</h2>";
            showAllDocuments($serviceDocs);
            break;
    }
}

// メソッド:全ドキュメント一覧取得、表示
function showAllDocuments($serviceDocs) { //【3】
    // ドキュメントリストの取得
    try {
        $listFeed= $serviceDocs->getDocumentListFeed();
    } catch (Zend_Gdata_App_Exception $e) {
        echo "エラー: " . $e->getMessage();
    }

    showDocumentList($listFeed);
}

// メソッド:指定されたフィードのドキュメント一覧表示
function showDocumentList($listFeed) { //【4】
    (略。table表示関連コード)

    // ドキュメントのエントリーごとに処理
    foreach ($listFeed->entries as $entry) {

        // ドキュメントのタイトル取得
        $title = $entry->title;
        // ドキュメントのリンク取得
        foreach ($entry->link as $link) {
            if($link->getRel() == 'alternate') {
               $linkUrl = $link->getHref();
            }
        }
        // 最終更新日取得
        $timestamp = strtotime($entry->updated);
        $update = date('Y/m/d H:i:s', $timestamp);

        (略。table表示関連コード)
    }
}
1. ドキュメント一覧表示リンク

 本サンプルコードは1ファイルで完結しています。自身のURLにパラメータ「show」を与えたリンクを作成します。

2. リンクメニューの振り分け

 1.のリンクからパラメータを取得し、「show」であった場合、自作メソッドshowAllDocumentsを呼び出します。

3. 全ドキュメント一覧取得、表示メソッド

 サーバ上にあるすべてのドキュメントを取得、表示するためのメソッドです。Google CalendarやYoutubeの際と同様に、サービスオブジェクトからフィードを取得します。

[リスト4]index.php(抜粋)
$listFeed= $serviceDocs->getDocumentListFeed();

 このgetDocumentListFeedメソッドには、サーバに要求するフィードのURIに関する引数を1つ与えることができます。この引数によって目的のフィードを得ることができます。

getDocumentListFeedの引数
説明
デフォルト値(http://docs.google.com/feeds/documents/private/full)が適用され、すべてのフィードを取得する。
Zend_Gdata_Query QueryオブジェクトのgetQueryUrlメソッドで取得されるURIが適用され、Queryオブジェクトに設定したオプションに従ったフィードを取得する。
String 文字列で記載されたURLが適用される。

 サンプルではすべてのドキュメントを表示したいため、引数を指定していません。

 取得したフィードを引数として、さらに自作メソッドshowDocumentListを呼び出します。

4. 指定されたフィードのドキュメント一覧表示メソッド

 引数に指定されたフィードに含まれるドキュメントのタイトルと最終更新日を取得し、一覧表示するメソッドです。1つのエントリーが1つのドキュメントを表します。

 Google CalendarやYoutubeの際と同様にエントリーからは、さまざまなパラメータを情報として取得できます。Zend_Gdata_Docs_DocumentListEntryオブジェクト固有のパラメータはなく、その他のクラスと共通のパラメータ(つまり親クラスであるZend_Gdata_Entryやさらにその親クラスにあたるZend_Gdata_App_FeedEntryParentクラスのパラメータ)のみが取得できます。

 得られるパラメータはオフィシャルのドキュメントを参照ください。

 また、Google Data APIでフィードとして使用されるAtomでは日付をRFC3339形式で表します。「YYYY:MM:DDTHH:MM:SSSZ」という表記です。このままでは扱いにくいので、一度strtotimeメソッドでPHPの扱えるタイムスタンプに変更してから、dateメソッドにて文字列として加工します。

[リスト5]index.php(抜粋)
// 最終更新日取得
$timestamp = strtotime($entry->updated);
$update = date('Y/m/d H:i:s', $timestamp);

次のページ
アップロード

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング