Home > Zend_Gdata > Zend_Gdata_DocsによるGoogleドキュメントの作成

Zend_Gdata_DocsによるGoogleドキュメントの作成

intro
Zend_Gdata_Docsを利用して、csvファイルをアップロードしgoogleスプレッドシートを作成します。
詳細に関してはGoogle Document List Data APIを参照してください。
以下のプログラムを実行するにはgoogle docsを利用可能なgoogleアカウントが必要です。
一応デモサイトからも動作を確認できます(セキュリティについては詳しくは知りませんが)。

1.コントローラの作成
以下のようにapplication/constorllers/GdocsController.phpファイルを作成します。

<?php
require_once 'Zend/Controller/Action.php';
require_once 'Zend/Gdata.php';
require_once 'Zend/Gdata/AuthSub.php';
require_once 'Zend/Gdata/Docs.php';
require_once 'Zend/Session/Namespace.php';
 
class GdocsController extends Zend_Controller_Action
{
    protected $_session;
    protected $_templateFile = '/path/to/template.csv';
    protected $_title = 'Test Spreadsheet';
 
    public function preDispatch()
    {
        $this->_session = new Zend_Session_Namespace('GdocsController');
    }
 
    public function indexAction()
    {
        if (!isset($this->_session->cal_token)) {
            if (isset($_GET['token'])) {
                // You can convert the single-use token to a session token.
                $token = $_GET['token'];
                $session_token =  Zend_Gdata_AuthSub::getAuthSubSessionToken($token);
                // Store the session token in our session.
                $this->_session->cal_token = $session_token;
            } else {
                // Display link to generate single-use token
                $url = 'http://'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
                $scope = 'http://docs.google.com/feeds/documents';
                $secure = false;
                $session = true;
                $googleUri = Zend_Gdata_AuthSub::getAuthSubTokenUri(
                    $url, $scope, $secure, $session);
                $this->view->message =
                    "Go <a href='$googleUri'>Google Login Screen</a>";
                return $this->render();
            }
        }
    }
 
    public function createAction()
    {
        $client = Zend_Gdata_AuthSub::getHttpClient($this->_session->cal_token);
        $docs = new Zend_Gdata_Docs($client);
        $newDocumentEntry = $docs->uploadFile(
            $this->_templateFile, $this->_title,
            Zend_Gdata_Docs::lookupMimeType($fileExtension),
            Zend_Gdata_Docs::DOCUMENTS_LIST_FEED_URI
        );
        $this->view->message =
            'Document was created!Check it from your google docs page.';
    }
 
    public function logoutAction()
    {
        if (isset($this->_session->cal_token))
        {
            Zend_Gdata_AuthSub::AuthSubRevokeToken($this->_session->cal_token);
            unset($this->_session->cal_token);
        }
        $this->_helper->redirector('index');
    }
}
2.ビューの作成
以下のようにapplication/views/scripts/gdocs/index.phtmlファイルを作成します。

<?php if (isset($this->message)) : ?>
<?= $this->message ?>
<?php else : ?>
<ul>
<li><a href="<?= $this->url(array('action'=>'create'))?>">create spreadsheet</a></li>
</ul>
<div>
<a href="<?= $this->url(array('action'=>'logout'))?>">Logout</a>
</div>
 
<?php endif; ?>

以下のようにapplication/views/scripts/gdocs/create.phtmlファイルを作成します。

<?php if (isset($this->message)) : ?>
<?= $this->message ?>
<?php endif; ?>
<div>
<a href="<?= $this->url(array('action'=>'index'))?>">Back</a>
</div>
 

3.確認
Webサーバにアクセスし、googleアカウントでログイン後、ドキュメント作成を実行してみてください。
履歴
日付 内容
2008/5/2 公開

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.oplabo.jp/article/40/trackback
Listed below are links to weblogs that reference
Zend_Gdata_DocsによるGoogleドキュメントの作成 from Open Programming Laboratory

Home > Zend_Gdata > Zend_Gdata_DocsによるGoogleドキュメントの作成

English
Search
Feeds

Return to page top