分类分类
关注+2011-01-24作者:佚名
简介
在本文第一部分中,我向您介绍了 Google Spreadsheets Data API,一种允许开发人员使用 Google Spreadsheets 云中托管的用户空间电子表格数据轻松构建新应用程序的 REST API。我解释了电子表格、工作表、列表和单元格提要等基本知识,演示了如何对这些提要使用 Zend Framework 来快速、高效地将电子表格内容推入到一个 PHP 应用程序中。
然而,Google Spreadsheets Data API 不仅仅支持检索和搜索电子表格。在本文的最后一部分中,我将解释如何使用 Data API 远程操作电子表格内容,从一个远程 PHP 应用程序中添加、更新和删除行、单元格、工作表。本文将通过两个示例应用程序来演示所涉及的技巧,分别是使用 Data API 读取 rss 提要和 SQL 结果集并将它们导入到一个 Google Spreadsheet。
添加工作表
每个电子表格都包含一个或多个工作表,Google Spreadsheets Data API 允许您通过编程方式访问和操作这些工作表。要了解其工作方式,请访问 Google Spreadsheets 服务,登录并创建一个空的电子表格。注意,电子表格键应当可以从 URL 中看到。您的空电子表格应当类似于 图 1。
图 1. 创建一个新的空电子表格
截图" src="https://thumb10.jfcdns.com/up/2011-1/201112485058868.jpg" width="436" />
要向电子表格添加一个新的工作表,需要以 Atom 格式生成一个新的工作表条目,然后将该条目 POST 到指定电子表格的工作表 URL 中。考虑 清单 1,其中演示了这一过程。
清单 1. 清单 1. 添加一个新的工作表
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Creating worksheets</title>
<style>
body {
font-family: Verdana;
}
</style>
</head>
<body>
<?php
// load Zend Gdata libraries
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
// set credentials for ClientLogin authentication
$user = "someuser@gmail.com";
$pass = "somepass";
try {
// connect to API
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata_Spreadsheets($client);
// get spreadsheet entry
$ssEntry = $service->getSpreadsheetEntry(
'https://spreadsheets.google.com/feeds/spreadsheets/ssid');
// get worksheet feed for this spreadsheet
$wsFeed = $service->getWorksheetFeed($ssEntry);
// create new entry
$doc = new DOMDocument();
$doc->formatOutput = true;
$entry = $doc->createElement('atom:entry');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,
'xmlns:atom', 'http://www.w3.org/2005/Atom');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,
'xmlns:gs', 'http://schemas.google.com/spreadsheets/2006');
$doc->appendChild($entry);
// add title, row and column counts
$title = $doc->createElement('atom:title', 'Jan 2011');
$entry->appendChild($title);
$rows = $doc->createElement('gs:rowCount', '10');
$entry->appendChild($rows);
$cols = $doc->createElement('gs:colCount', '10');
$entry->appendChild($cols);
// insert entry
$entryResult = $service->insertEntry($doc->saveXML(),
$wsFeed->getLink('self')->getHref());
echo 'The ID of the new worksheet entry is: ' . $entryResult->id;
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}
?>
</body>
<html>
首先需要注意的是,Zend_Gdata_Spreadsheets 组件没有提供本地方法来添加或更新工作表。但是仍然可以执行这些操作。您必须手动创建 XML 工作表元素,并使用通用的 insertEntry() 方法将其 POST 到正确的 URL。
清单 1 首先获得对指定电子表格条目的引用,然后获得该条目的工作表提要。接下来,创建一个 DOMDocument 对象来表示实际的条目,然后向其添加元素来指定工作表标题、行数和列数。最后,insertEntry() 方法向工作表提要的 URL 发送 XML 片段,以将修改提交给电子表格。
在执行本脚本并返回到 Google Spreadsheets GUI 后,将看到空的电子表格中出现了一个新的工作表,如 图 2 所示。
图 2. 图 2. 添加了新工作表的电子表格
截图" src="https://thumb10.jfcdns.com/up/2011-1/20111248510111.jpg" width="402" />
完成这一任务的另一种方法是创建 Zend_Gdata_Spreadsheets_WorksheetEntry 对象的一个实例,设置它的属性,然后将该条目对象提交给工作表提要 URL。最终的结果是相同的,但是这一种方法更简单一些,因为 Zend_Gdata_Spreadsheets 将负责处理生成工作表条目 XML 等细节。考虑 清单 2,其中演示了生成与 清单 1 等效的输出的替代方法。
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论