РЕДАКТИРОВАТЬ: Обновил это, чтобы привести его в соответствие с тем, что я думаю, вы хотите - дайте мне знать, если это не так, но это может помочь.Я предполагаю, что вы используете шаблон MVC с Zend Framework, поэтому вам, возможно, придется настроить соответственно, попробуйте этот класс:
class SpreadsheetAdapter
{
protected $_spreadsheetService;
public function __construct()
{
$client =
Zend_Gdata_ClientLogin::getHttpClient($yourUsername,$yourPassword,
Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME);
$this->_spreadsheetService = new Zend_Gdata_Spreadsheets($client);
}
public function getSheets()
{
$sheetArray = array();
$totalSheets = count($this->_spreadsheetService->getSpreadsheetFeed()->entries[0]->link);
for($i = 0; $i <= $totalSheets; $i++)
{
$link{$i} = $this->_spreadsheetService->getSpreadsheetFeed()->entries[$i]->link[1]->href;
$title{$i} = $this->_spreadsheetService->getSpreadsheetFeed()->entries[$i]->getTitleValue();
$sheetArray[$link{$i}] = $title{$i};
}
return $sheetArray;
}
public function getRows($spreadsheetKey)
{
// returns a multidimensional array filled with data from populated rows in a Google Docs Spreadsheet
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey($spreadsheetKey);
$feed = $this->_spreadsheetService->getWorksheetFeed($query);
return $feed->entries[0]->getContentsAsRows();
}
}
Тогда это в выбранном вами контроллере:
public function spreadAction()
{
$adapter = new SpreadsheetAdapter();
$sheetArray = $adapter->getSheets();
$this->view->sheetArray = $sheetArray;
}
Тогда это, по вашему мнению:
<h2>Spreadsheets</h2>
<ul>
<?php
foreach($this->sheetArray as $sheet['link'] => $sheet['title'])
{
echo '<li><a href="' . $sheet['link'] . '">' . $sheet['title'] . '</a></li>';
}
?>
</ul>
ПРИМЕЧАНИЕ: Хотя, возможно, есть и другие способы сделать это, вы могли бы ухватиться только за ключ электронной таблицы, используя что-то вроде этого (ямы только что изменили то, что было бы в представлении):
<h2>Spreadsheets</h2>
<ul>
<?php
foreach($this->sheetArray as $sheet['link'] => $sheet['title'])
{
$linkChop = explode('=',$sheet['link']);
$spreadsheetKey = end($linkChop);
echo '<li><a href="http://yourdomain/yourmodule/yourcontroller/youraction/' . $spreadsheetKey . '">' . $sheet['title'] . '</a></li>';
}
?>
</ul>
В приведенном выше примере я пытался проиллюстрировать, как вы можете использовать только ключ.Если бы я делал это в ZF самостоятельно, я бы привязал $ spreadsheetKey в качестве параметра в URL-адресе при маршрутизации к действию, где я хотел бы использовать метод, такой как getRows ().Если вы хотите пример, который я мог бы собрать?
Оцените Я немного догадываюсь о том, чего вы хотите достичь, но, надеюсь, это поможет.
Приветствия,
Дейв
О 2-х ШАГОВОМ АВТОМАТИЧЕСКОМ: Немного не по теме, что может оказаться полезным, - убедиться, что двухэтапная аутентификация отключена в учетной записи Google, так как это не позволит вам подключиться таким образом..