Я использую эту библиотеку https://github.com/asimlqt/php-google-spreadsheet- client для взаимодействия с API электронных таблиц Google.

Используя приведенные примеры практически как есть, у меня есть этот код протирания:

$request = new Google\Spreadsheet\Request($access['access_token']);
    $serviceRequest = new Google\Spreadsheet\DefaultServiceRequest($request);
    Google\Spreadsheet\ServiceRequestFactory::setInstance($serviceRequest);

    $spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
    $spreadsheetFeed = $spreadsheetService->getSpreadsheets();
    var_dump($spreadsheetFeed);

    $spreadsheet = $spreadsheetFeed->getByTitle('a spreadsheet');

    echo "<h1>Start spreadsheet single feed</h1>";
    var_dump($spreadsheet);

Последняя строка неожиданно печатает null. Я надеялся, что кто-нибудь, знакомый с библиотекой, сможет направить меня в правильном направлении.

Кстати, вот что показывает дамп $ spreadsheetFeed:

    object(Google\Spreadsheet\SpreadsheetFeed)#263 (2) { 
["xml":"Google\Spreadsheet\SpreadsheetFeed":private]=>
 object(SimpleXMLElement)#200 (5) { ["id"]=> string(63) 
"https://spreadsheets.google.com/feeds/spreadsheets/private/full" 
["updated"]=> string(24) "2014-04-22T15:41:32.296Z" 
["category"]=> object(SimpleXMLElement)#244 (1) {
 ["@attributes"]=> 
array(2) { 
["scheme"]=> string(43) "http://schemas.google.com/spreadsheets/2006" 
["term"]=> string(55) "http://schemas.google.com/spreadsheets/2006#spreadsheet" 
} 
} 
["title"]=> string(100) "Available Spreadsheets - <redacted!>" 
["link"]=> array(3) { 
[0]=> object(SimpleXMLElement)#243 (1) {
 ["@attributes"]=> array(3) {
 ["rel"]=> string(9) "alternate" 
["type"]=> string(9) "text/html" ["href"]=> string(22) "http://docs.google.com" 
} 
}
 [1]=> object(SimpleXMLElement)#245 (1) { 
["@attributes"]=> array(3) { 
["rel"]=> string(37) "http://schemas.google.com/g/2005#feed" 
["type"]=> string(20) "application/atom+xml" 
["href"]=> string(63) "https://spreadsheets.google.com/feeds/spreadsheets/private/full" 
} 
} 
[2]=> object(SimpleXMLElement)#246 (1) { 
["@attributes"]=> array(3) { 
["rel"]=> string(4) "self" 
["type"]=> string(20) "application/atom+xml" 
["href"]=> string(63) "https://spreadsheets.google.com/feeds/spreadsheets/private/full" 
} 
} 
} 
} 
["storage":"ArrayIterator":private]=> array(0) { 
} 
}

Похоже, что он вообще не содержит никаких электронных таблиц, что очень сбивает с толку, поскольку я успешно подтверждаю наличие желаемой электронной таблицы ранее в коде через api диска. Очевидно, между двумя библиотеками, которые я использую, есть какое-то несоответствие, которое не задокументировано, но я понятия не имею, как его отлаживать.

Библиотека дисков - это внутренняя библиотека Google здесь https://github.com/google/google- api-php-client

1
green green grass 22 Апр 2014 в 20:28

2 ответа

Лучший ответ

Просто чтобы дать какое-то разрешение (и, возможно, указатель для кого-то другого).

Я вернулся к проблеме свежим и обнаружил, что в api электронной таблицы Google есть невысказанное предположение, что файл, к которому осуществляется доступ, является собственной электронной таблицей Google. Как только я изменил создание файла, чтобы создать его вместо файла .xls, все разрешилось само.

0
green green grass 23 Апр 2014 в 09:52

Мне не удалось просмотреть существующие листы, которые должны были появиться в spreadsheetFeed, я нашел и статью Карла Краниха на его веб-сайте, в которой говорится, что документ должен быть передан на адрес электронной почты разработчика oath с разрешениями на редактирование. После того, как я поделился им с разрешениями на редактирование, я теперь вижу его в списке.

2
user2675760 3 Июн 2015 в 21:59