Zend_Gdataを使ってみる

概要

早速「Zend_Gdata」の「Google Spreadsheets」を使ってみたいと思います。

データ作成

事前準備としてgoogleアカウントを作成し、googleドキュメントに「商品データベース」という名前でSpreadsheetsを作成しておきます。

商品データベース(シート名:商品一覧)
no name price show_detail show_image1
1 商品1 500 商品1の詳細説明 ※画像(画像の管理はPicasaで行います)
2 商品2 600 商品2の詳細説明 ※画像(画像の管理はPicasaで行います)

一覧表示

先ほど作成した「商品データベース」を一覧表示します。

  1. まずはZend Frameworkのクラスの読込み

    require_once 'Zend/Loader/Autoloader.php';
    // Zend Frameworkのクラス自動読込
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->setFallbackAutoloader(true);
    
  2. つぎにClientAuth 認証

        // ClientAuth 認証用のパラメータ
        $user = "googleアカウント";
        $pass = "パスワード";
        $service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
    
        // 認証済みHTTPクライアント作成
        $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
    
  3. スプレッドシートの読み込み

        // Spreadsheetサービスのインスタンス作成
        $serviceSpread = new Zend_Gdata_Spreadsheets($client);
        // フィードの取得
        $feed = $serviceSpread->getSpreadsheetFeed();
    
        // スプレッドシートのキー取得
        $i = 0;
        foreach($feed->entries as $entry) {
            if(strcmp($entry->title->text, "商品データベース")==0) {
                $key = split('/', $feed->entries[$i]->id->text);
                $spreadsheetKey = $key[5];
            }
            $i++;
        }
    

    スプレッドシートのキーは各スプレッドシートのURLで
    http://spreadsheets.google.com/feeds/spreadsheets/各スプレッドシートのキー
    となっています。

  4. ワークシートの取得

        // クエリの作成
        $query = new Zend_Gdata_Spreadsheets_DocumentQuery();
        $query->setSpreadsheetKey($spreadsheetKey);
    
        // ワークシートフィードの取得
        $feed = $serviceSpread->getWorksheetFeed($query);
    
        // ワークシートの検索
        $i = 0;
        foreach($feed->entries as $entry) {
            $worksheetId = split('/', $feed->entries[$i]->id->text);
            if(strcmp($entry->title->text, "商品一覧")==0){
                $worksheetKey = $worksheetId[8];
            }
            $i++;
        }
    

    http://spreadsheets.google.com/feeds/worksheets/スプレッドシートのキー/private/full/ワークシートのキー

  5. ヘッダ行の取得

        // クエリの作成
        $query = new Zend_Gdata_Spreadsheets_ListQuery();
        $query->setSpreadsheetKey($spreadsheetKey);
        $query->setWorksheetId($worksheetKey);
    
        // リストフィードの取得
        $listFeed = $serviceSpread->getListFeed($query);
    
        // ヘッダの取得
        $feedHeader = array();
        $rowData = $listFeed->entries[0]->getCustom();
        foreach($rowData as $customEntry) {
          $feedHeader[] = $customEntry->getColumnName();
        }
    
  6. データリストの取得

        
        // データの取得
        $feedData = array();
        $i = 0;
        foreach($listFeed->entries as $entry) {
          $rowData = $listFeed->entries[$i]->getCustom();
          foreach($rowData as $customEntry) {
            $header = $customEntry->getColumnName();
            $feedData[$i][$header] = $customEntry->getText();
          }
          $i++;
        }
    
  7. 取得したデータの表示

    echo "<table><tr>";
        
        foreach($feedHeader as $header) {
          if(!(strpos($header, "show") !== false)){
            echo "<th>".$header."</th>";
          }
        }
        echo "<th>詳細</th>";
        echo "</tr>";
        
        foreach($feedData as $key=>$datas) {
          echo "<tr>";
          foreach($datas as $header=>$data) {
            if(strpos($header, "price") !== false){
              echo "<td>".$data."円</td>";
            }else if(!(strpos($header, "show") !== false)){
              echo "<td>".$data."</td>";
            }
          }
          echo "<td>" . "<a href='show.php?id=" . $key . "'>詳細</a>" . "</td>";
          echo "</tr>";
        }
    
    echo "</table>";
    

詳細ページに表示したい内容はヘッダ行に「show_」と付けておきます。あとは、getで受け取った商品の詳細を表示するページを作成すればOK。内容は上記とほぼ同じなので割愛します。

投稿日:

ページのトップへ戻る