Сервисная учетная запись для Google листов не найдена - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь прочитать электронную таблицу, используя учетную запись службы (я не могу использовать OAuth, который работает, поскольку процесс будет выполняться на сервере для периодической проверки данных листа)

Я пробовал несколько подходов. Если я последую примеру, используя oauth, я смогу увидеть значения листа. Однако мне нужно запустить скрипт без какого-либо графического интерфейса в фоновом режиме.

Я нашел этот урок https://github.com/juampynr/google-spreadsheet-reader Я создал проект, учетную запись службы, добавил роль зрителя, поделился таблицей с электронной почтой учетной записи службы. Сгенерировал ключ. Похоже, что тестовая программа может подключиться к сервисам Google, но в тот момент, когда она запрашивает электронную таблицу, конечный результат «404 не найден».

require 'vendor/autoload.php';

$service_account_file = '/secrets/readsheetmar2019-08b737d1c1cb._portfolio_test.json';


$spreadsheet_id = '1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30';

$spreadsheet_range = '';

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $service_account_file);
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Sheets::SPREADSHEETS_READONLY);
$client->fetchAccessTokenWithAssertion();
$service = new Google_Service_Sheets($client);

//added by me
if ($client->isAccessTokenExpired()) {
  print "expired\n";
}else{
  print "not expired\n";
}

$result = $service->spreadsheets_values->get($spreadsheet_id, $spreadsheet_range);
var_dump($result->getValues());

Ошибка: неустранимая ошибка PHP: необработанное исключение 'Google_Service_Exception' с сообщением ' Ошибка 404 (не найдена) !! 1

1 Ответ

1 голос
/ 22 марта 2019
  • Когда используется токен доступа, полученный OAuth2, электронная таблица $spreadsheet_id = '1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30'; может получить значения.
  • При использовании токена доступа, полученного с помощью учетной записи службы, возвращается Error 404 (Not Found)!!1.

Если мое понимание верно, пожалуйста, подтвердите следующие пункты.

Точки подтверждения:

  1. В качестве пробного запуска установите диапазон $spreadsheet_range = '';.
    • Например, это $spreadsheet_range = 'Sheet1'.
  2. Если возвращается сообщение об ошибке The caller does not have permission, подтвердите следующее.
    • Предоставляет ли электронная таблица с учетной записью службы учетную запись 1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30.
    • Если вы не предоставили учетную запись службы в электронной таблице, отправьте электронную почту client_email вфайл readsheetmar2019-08b737d1c1cb._portfolio_test.json в электронную таблицу, к которой вы хотите получить доступ.
  3. Если возвращается сообщение об ошибке Google Sheets API has not been used in project ### before or it is disabled., включите Sheets API.

Если это не решение вашей проблемы, я прошу прощения.

...