SHOEISHA iD

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

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

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

PHPアプリでGoogle Spreadsheetをデータベースとして利用しよう

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


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

今回のサンプル

 今回のサンプルは、簡単な商品の注文登録、明細出力を行うものです。

 注文登録ではスプレッドシートをデータベースとして使用し、ブラウザから入力されたデータを登録しましょう。ただデータベースとして使用するだけではスプレッドシートを活かしきれませんので、明細書のひな形となる整形されたスプレッドシートを用意し、明細出力も行ってみましょう。この雛形にはあらかじめ数式を設定しておき、計算はスプレッドシートに任せるようにします。

図2:注文入力画面
図2:注文入力画面
図3:明細書
図3:明細書

 以下がサンプルコードの概要になります。

 認証についてはもはや説明不要かと思いますので省略します。また、以下の初回アクセス時の処理部分についてはHTMLのフォームの処理のみなので解説は割愛します。

[リスト1]index.phpの構造
認証

注文ボタンが押下された場合の処理 {
    認証
    Spreadsheetサービスの取得
    スプレッドシートのキー取得
    ワークシートのキー取得

    注文データ数の確認
    注文データの登録
    明細書データの登録
}

初回アクセス時の処理 {
    注文フォームの表示
}

Spreadsheetサービスの取得

 Zend_Gdata_Spreadsheetのコンストラクタを生成します。他のZend_Gdataの扱うサービスと同様に引数に認証済みのHTTPクライアントを与えることで、Spreadsheetサービスを取得します。

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

スプレッドシートのID取得

 まずはサーバ上にあるGoogleスプレッドシートの中から、今回使用するスプレッドシートを取得しましょう。Zend_Gdata_Spreadsheetの各関数ではスプレッドシートをそのキーで識別するため、キーを取得します。

 今回は取得したいスプレッドシート名を引数として、キーを取得する自作関数を使用しています。汎用的な動作ですので、今回のサンプル以外でもスプレッドシートを扱う際には使用することができるかと思います。

[リスト3]index.php(抜粋)
// 関数:スプレッドシートのキー検索
function getSpreadsheetKey($service, $spreadsheetname){
    // フィードの取得①
    $feed = $service->getSpreadsheetFeed();

    // スプレッドシートのキー取得
    $i = 0;
    foreach($feed->entries as $entry) {②
        if(strcmp($entry->title->text, $spreadsheetname)==0) {③
            $key = split('/', $feed->entries[$i]->id->text);④
            $returnKey = $key[5];
        }
        $i++;
    }
    return $returnKey;
}

1. フィードの取得

 まずはZend_Gdata_Spreadsheetサービスからフィードを取得します。

2. エントリーの取得

 フィードからエントリーを取得します。このエントリー1つが、1つのスプレッドシートにあたります。

3.対象のスプレッドシートを検索

 「$entry->title->text」にはスプレッドシートのタイトルが格納されています。引数として指定されている$spreadsheetnameがスプレッドシートの名前と一致しますので、その引数とタイトルが一致するものについて処理をするよう検索します。

4. スプレッドシートのキー取得

 若干トリッキーな処理をしていますが、スプレッドシートのフィードを表すURLからそのスプレッドシート固有のキーを抜き出します。

 「$feed->entries[$i]->id->text」は次のような文字列を表します。

[リスト4]->id->text
http://spreadsheets.google.com/feeds/spreadsheets/【各スプレッドシート固有のキー】

 split関数を使用して区切り文字「/」で区切った文字列を配列に格納し、インデックス5番目にあるデータ、つまり【各スプレッドシート固有のID】を取得します。

スプレッドシートのURL取得

 明細書はブラウザ上からアクセスさせるために、そのURLを取得します。

 これについても汎用的に対象のスプレッドシート名からURLを取得する関数を使用して取得します。処理はキー取得の際とほとんど変わりませんが、上記の「④スプレッドシートのキー取得」の部分が次のようになるだけです。

[リスト5]index.php(抜粋)
$returnUrl = $feed->entries[$i]->getLink('alternate')->href;

 「$feed->entries[$i]->getLink('alternate')->href」は次のような文字列を表します。

[リスト6]->getLink('alternate')->href
http://spreadsheets.google.com/ccc?key=【各スプレッドシートを表す文字列】

 このURLはGoogleドキュメント上でスプレッドシートを開いた際にアドレスバーで確認できるものと同じです。

次のページ
ワークシートのID取得

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

  • 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 X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング