Just as a follow up I confirmed that this is an issue and have entered it here:
http://code.google.com/p/gdata-issues/issues/detail?id=835 Please subscribe to that issue to be notified of updates. Thanks - Jochen On Oct 20, 12:17 pm, "Jochen Hartmann (Google)" <[EMAIL PROTECTED]> wrote: > Hi, > > I would recommend checking out this thread: > > http://groups.google.com/group/Google-Docs-Data-APIs/browse_thread/th... > > Cheers, > - Jochen > > On Oct 18, 7:30 pm, HippoMan <[EMAIL PROTECTED]> wrote: > > > I found another, better way to do this (refer to my code above): > > > // ... etc. ... > > $query = new Zend_Gdata_Spreadsheets_DocumentQuery(); > > $query->setDocumentType('spreadsheets'); > > try { > > $feed = $ssService->getSpreadsheetFeed($query);} > > > catch (Exception $e) { > > echo "<pre>\n"; > > print_r($e); > > echo "</pre>\n"; > > exit(0);} > > > // ... etc. ... > > > In other words, we create a Zend_Gdata_Spreadsheets_DocumentQuery > > object and we set its document type to 'spreadsheets'. Then, we pass > > this query object as an argument to the getSpreadsheetFeed method. > > This causes it to automatically modify the URI that it uses internally > > into the same form that I explicitly coded in my previous message. > > > So it appears that the Zend Gdata API indeed has a way to manage the > > setting of this URI without the programmer having to explicitly set > > it, and without having to hack the underlying code. > > > Note that we have to be careful not to reuse this query object "as is" > > if we're subsequently calling getSpreadsheetKey, because the document > > type cannot be set to 'spreadsheets' when that method is being called. > > If we reuse that object, we have to do this before calling > > getSpreadsheetsKey ... > > > $query->setDocumentType(''); > > > This begs a new question: is any of this documented? I couldn't find > > any docs which describe how to use the methods of the > > Zend_Gdata_Spreadsheets_DocumentQuery in order to solve this kind of > > problem, and I had to figure it out by looking through the source code > > for the Zend/Gdata package. This apparent lack of docs caused me to > > waste quite a few hours, and I would guess that this loss of person- > > hours has been multiplied many times over by others who have to solve > > the same problems. > > > It's good that we have these forums where we can share our knowledge, > > but I believe that its incumbent upon the developers/releasers of Zend/ > > Gdata to provide more detailed documentation about the structure of > > the objects they release and their use in these common tasks. Sample > > code is provided and it's helpful, but it isn't enough without proper > > documentation. > > > ... or have I simply missed a discussion of this somewhere in the > > official docs? > > > On Oct 18, 12:49 am, HippoMan <[EMAIL PROTECTED]> wrote: > > > > Well, I found a solution: > > > >http://groups.google.com/group/Google-Docs-Data-APIs/browse_thread/th... > > > > I have to pass the following argument to getSpreadsheetFeed(): > > > > 'http://spreadsheets.google.com/feeds/spreadsheets/private/full' > > > > In other words ... > > > > $feed = $ssService->getSpreadsheetFeed('http://spreadsheets.google.com/ > > > feeds/spreadsheets/private/full'); > > > > This is necessary because the default URI used within the > > > Zend_Gdata_Spreadsheets class isn't correct ... at least not for the > > > way I'm using it here. The default is 'http://spreadsheets.google.com/ > > > feeds/spreadsheets'. > > > > Does that default work for certain kinds of spreadsheets, or is it no > > > longer valid at all? If it's the latter, then the ZendGdata code needs > > > to be changed. > > > > It turns out that the gdata.py API uses a URI of the form > > > http://{X}/feeds/spreadsheets/{Y}/{Z} where {X} defaults to > > > 'spreadsheets.google.com', {Y} defaults to 'private', and {Z} defaults > > > to 'full', and where {X}, {Y}, and {Z} are overridable at run time. > > > Methinks that the ZendGdata API should use the same defaults. > > > > On Oct 17, 10:39 pm, HippoMan <[EMAIL PROTECTED]> wrote: > > > > > I'm trying to use the Zend Gdata API to retrieve data from some Google > > > > spreadsheets, and I'm following the pattern described in this > > > > document:http://framework.zend.com/manual/en/zend.gdata.spreadsheets.html. > > > > However, when I issue the getSpreadsheetFeed() method as described in > > > > that document, my application throws an exception. > > > > > Here's my code (email and password changed to dummy values): > > > > > $email = '[EMAIL PROTECTED]'; > > > > $pw = 'my-password'; > > > > $service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME; > > > > try { > > > > $client = Zend_Gdata_ClientLogin::getHttpClient($email, $pw, > > > > $service);} > > > > > catch (Zend_Gdata_App_CaptchaRequiredException $cre) { > > > > echo 'URL of CAPTCHA image: ' . $cre->getCaptchaUrl() . "<br/>\n"; > > > > echo 'Token ID: ' . $cre->getCaptchaToken() . "<br/>\n"; > > > > exit(0);} > > > > > catch (Zend_Gdata_App_AuthException $ae) { > > > > echo 'Problem authenticating: ' . $ae->exception() . "<br/>\n"; > > > > exit(0);} > > > > > echo "Authenticated<br/>\n"; > > > > $ssService = new Zend_Gdata_Spreadsheets($client); > > > > echo "ssService created<br/>\n"; > > > > $feed = $ssService->getSpreadsheetFeed(); > > > > echo "feed created<br/>\n" > > > > foreach ($feed->entries as $entry) { > > > > echo $entry->title->text .' '. $entry->content->text . "<br/>\n"; > > > > > } > > > > > The exception gets thrown right at the getSpreadsheetFeed() method > > > > call. Here are the first few lines: > > > > > An error occurred > > > > Application error > > > > Exception information: > > > > > Message: Expected response code 200, got 404 > > > > Not Found > > > > Error 404 > > > > > Stack trace: > > > > > #0 /home/ofrecord/sites/hotelp/library/Zend/Gdata.php(201): > > > > Zend_Gdata_App->performHttpRequest('GET', 'http://spreadsh...', Array, > > > > NULL, NULL, NULL) > > > > #1 /home/ofrecord/sites/hotelp/library/Zend/Gdata/App.php(610): > > > > Zend_Gdata->performHttpRequest('GET', 'http://spreadsh...') > > > > #2 /home/ofrecord/sites/hotelp/library/Zend/Gdata/App.php(541): > > > > Zend_Gdata_App->get('http://spreadsh...') > > > > #3 /home/ofrecord/sites/hotelp/library/Zend/Gdata/App.php(147): > > > > Zend_Gdata_App->importUrl('http://spreadsh...', 'Zend_Gdata_Spre...') > > > > #4 /home/ofrecord/sites/hotelp/library/Zend/Gdata.php(148): > > > > Zend_Gdata_App->getFeed('http://spreadsh...', 'Zend_Gdata_Spre...') > > > > #5 /home/ofrecord/sites/hotelp/library/Zend/Gdata/ > > > > Spreadsheets.php(139): Zend_Gdata->getFeed('http://spreadsh...', > > > > 'Zend_Gdata_Spre...') > > > > #6 /home/ofrecord/sites/hotelp/application/views/scripts/index/ > > > > index.phtml(27): Zend_Gdata_Spreadsheets->getSpreadsheetFeed() > > > > ... etc. ... > > > > > The email address and password are correct. Furthermore, making the > > > > corresponding calls through the gdata.py API works without a problem. > > > > > Can anyone tell me what I'm doing wrong when using this Zend API? > > > > > Thanks in advance. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Docs Data APIs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/Google-Docs-Data-APIs?hl=en -~----------~----~----~----~------~----~------~--~---
