CodeZine(コードジン)

特集ページ一覧

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

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

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

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

 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);

  • 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