Вопрос

У меня есть этот код, который работает для загрузки электронной таблицы 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);
Это было полезно?

Решение

В следующей строке 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());

Другие советы

Как и @Matt, я хотел получить доступ к общедоступной таблице без предоставления учетных данных.Благодаря @Derek Illchuk я проделал часть пути.Однако это все еще не работало, пока я не узнал следующее:

  1. Обратите внимание, что Файл > Публикация в Интернете функция — это не то же самое, что Настройки общего доступа > Публично в Интернете.Если вы забудете включить «Опубликовать в Интернете», вы получите следующую ошибку: «Ожидаемый код ответа 200, получено 400. Таблица по этому URL-адресу не найдена.Убедитесь, что у вас правильный URL-адрес и что владелец таблицы не удалил ее».

  2. В настройках «Опубликовать в Интернете» обязательно снимите флажок «Требовать от зрителей входа в систему под своими учетными данными». ___ счет.".В противном случае вы получите эту ошибку: «Ожидаемый код ответа 200, получено 403. У вас нет доступа к таблице.Убедитесь, что вы правильно прошли аутентификацию».

  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).
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top