3

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);
4

2 に答える 2

2

次の行では、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());
于 2009-12-15T14:24:31.467 に答える
0

@Matt のように、資格情報を提供せずにパブリック スプレッドシートにアクセスしたかったのです。@Derek Illchukのおかげで、私はそこへの道のりの一部を得ました。ただし、次のことを学ぶまではまだ機能していませんでした。

  1. [ファイル] > [Web に公開] 機能は、 [共有設定] > [Web で公開]と同じではないことに注意してください。「Web に公開」を有効にするのを忘れた場合、次のエラーが表示されます。スプレッドシートはそれを削除していません。」

  2. [Web に公開] 設定で、[閲覧者に_ __アカウントでのサインインを要求する] のチェックを外してください。そうしないと、次のエラーが表示されます。

  3. Google のドキュメントによると、「スプレッドシート フィードは、「非公開」可視性と「完全」投影のみをサポートしています。ただし、「パブリック」可視性と「基本」プロジェクションを指定する必要があることがわかりました。そうしないと 、「予想される応答コード 200、取得した 501 のエラーは、このタイプの操作では正しくないか、サポートされていません」というエラーが表示されました。

これが私のために働いたものです:

    $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).
    }
于 2013-06-21T21:22:43.323 に答える