今回のサンプル
今回のサンプルは、簡単な商品の注文登録、明細出力を行うものです。
注文登録ではスプレッドシートをデータベースとして使用し、ブラウザから入力されたデータを登録しましょう。ただデータベースとして使用するだけではスプレッドシートを活かしきれませんので、明細書のひな形となる整形されたスプレッドシートを用意し、明細出力も行ってみましょう。この雛形にはあらかじめ数式を設定しておき、計算はスプレッドシートに任せるようにします。
以下がサンプルコードの概要になります。
認証についてはもはや説明不要かと思いますので省略します。また、以下の初回アクセス時の処理部分についてはHTMLのフォームの処理のみなので解説は割愛します。
認証 注文ボタンが押下された場合の処理 { 認証 Spreadsheetサービスの取得 スプレッドシートのキー取得 ワークシートのキー取得 注文データ数の確認 注文データの登録 明細書データの登録 } 初回アクセス時の処理 { 注文フォームの表示 }
Spreadsheetサービスの取得
Zend_Gdata_Spreadsheetのコンストラクタを生成します。他のZend_Gdataの扱うサービスと同様に引数に認証済みのHTTPクライアントを与えることで、Spreadsheetサービスを取得します。
// Spreadsheetサービスのインスタンス作成 $serviceSpread = new Zend_Gdata_Spreadsheets($client);
スプレッドシートのID取得
まずはサーバ上にあるGoogleスプレッドシートの中から、今回使用するスプレッドシートを取得しましょう。Zend_Gdata_Spreadsheetの各関数ではスプレッドシートをそのキーで識別するため、キーを取得します。
今回は取得したいスプレッドシート名を引数として、キーを取得する自作関数を使用しています。汎用的な動作ですので、今回のサンプル以外でもスプレッドシートを扱う際には使用することができるかと思います。
// 関数:スプレッドシートのキー検索 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」は次のような文字列を表します。
http://spreadsheets.google.com/feeds/spreadsheets/【各スプレッドシート固有のキー】
split
関数を使用して区切り文字「/」で区切った文字列を配列に格納し、インデックス5番目にあるデータ、つまり【各スプレッドシート固有のID】を取得します。
スプレッドシートのURL取得
明細書はブラウザ上からアクセスさせるために、そのURLを取得します。
これについても汎用的に対象のスプレッドシート名からURLを取得する関数を使用して取得します。処理はキー取得の際とほとんど変わりませんが、上記の「④スプレッドシートのキー取得」の部分が次のようになるだけです。
$returnUrl = $feed->entries[$i]->getLink('alternate')->href;
「$feed->entries[$i]->getLink('alternate')->href」は次のような文字列を表します。
http://spreadsheets.google.com/ccc?key=【各スプレッドシートを表す文字列】
このURLはGoogleドキュメント上でスプレッドシートを開いた際にアドレスバーで確認できるものと同じです。