【问题标题】:using Zend_Gdata_Spreadsheets for public spreadsheets?将 Zend_Gdata_Spreadsheets 用于公共电子表格?
【发布时间】:2010-12-26 16:46:49
【问题描述】:

我有这段代码正在运行,用于加载 Google 电子表格并从中加载一些数据。如果有问题的电子表格是公开的,我如何修改代码以不需要用户名/密码?

$key="keytothespreadsheet";
$user="test@example.com";
$pass="*****";

$authService = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$httpClient = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $authService);
$gdClient = new Zend_Gdata_Spreadsheets($httpClient);
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey($key);
$feed = $gdClient->getWorksheetFeed($query);
print_r($feed);

【问题讨论】:

    标签: zend-framework gdata-api gdata google-sheets


    【解决方案1】:

    在以下行中,HTTP 客户端是可选的:

    $gdClient = new Zend_Gdata_Spreadsheets($httpClient);
    


    所以,不要通过它。以下是等价的:

    $gdClient = new Zend_Gdata_Spreadsheets();
    // or
    $gdClient = new Zend_Gdata_Spreadsheets(null);
    // or
    $gdClient = new Zend_Gdata_Spreadsheets(new Zend_Http_Client());
    

    【讨论】:

      【解决方案2】:

      和@Matt 一样,我想在不提供凭据的情况下访问公共电子表格。感谢@Derek Illchuk,我成功了。但是,在我了解到以下内容之前,它仍然无法正常工作:

      1. 请注意,文件 > 发布到网络 功能与 共享设置 > 在网络上公开 不同。如果您忘记启用“发布到 Web”,您将收到以下错误:“预期响应代码 200,得到 400 找不到此 URL 的电子表格。确保您拥有正确的 URL,并且电子表格的所有者尚未将其删除。”

      2. 在“发布到网络”设置中,请务必取消选中“要求查看者使用他们的 ___ 帐户登录。”。否则您将收到此错误:“预期响应代码 200,得到 403 您没有查看电子表格的权限。请确保您已通过正确的身份验证。”

      3. 根据Google's documentation,“电子表格提要仅支持‘私人’可见性和‘完整’投影。”但是,我发现我需要指定“公共”可见性和“基本”投影。否则我得到这个错误: “预期响应代码 200,得到 501 Bad or unsupported projections for this type of operation。”

      这对我有用:

          $spreadsheetService = new Zend_Gdata_Spreadsheets(null);
          $query = new Zend_Gdata_Spreadsheets_CellQuery();
          $query->setSpreadsheetKey($spreadsheetKey);
          $query->setWorksheetId($worksheetId);
          $query->setVisibility('public'); //options are 'private' or 'public'
          $query->setProjection('basic'); //options are 'full' or 'basic'
          $cellFeed = $spreadsheetService->getCellFeed($query);
      
          foreach ($cellFeed as $cellEntry) {
              $text = $cellEntry->content->text;
              //Do something
              break; //I only wanted the first cell (R1C1).
          }
      

      【讨论】:

        猜你喜欢
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 2020-07-29
        相关资源
        最近更新 更多