未找到 google 张 returns 的服务帐户

Service Account for google sheets returns not found

我正在尝试使用服务帐户读取传播sheet(我不能使用 OAuth,但它有效,因为该过程将 运行 在服务器上定期检查 sheet数据)

我尝试了几种方法。如果我按照示例使用 oauth,我可以看到 sheet 值。但是,我需要 运行 后台没有任何 GUI 的脚本。

我找到了这个教程https://github.com/juampynr/google-spreadsheet-reader 我已经创建了一个项目,服务帐户,添加了查看者角色,与服务帐户电子邮件共享了 spreadsheet。生成密钥。 测试程序似乎可以连接到 google 服务,但是当它请求 spreadsheet 时,最终结果是“404 not found”。

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

  • 当使用OAuth2取回的access token时,$spreadsheet_id = '1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30';的Spreadsheet可以取回值。
  • 当使用服务帐户检索到的访问令牌时,返回 Error 404 (Not Found)!!1

如果我的理解正确,请确认以下几点。

确认点:

  1. 作为测试运行,请设置范围$spreadsheet_range = '';
    • 例如$spreadsheet_range = 'Sheet1'.
  2. 如果返回The caller does not have permission的错误信息,请确认如下。
    • 1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30的电子表格是否共享服务帐号的邮箱。
    • 如果您没有将服务帐户共享到电子表格,请将 readsheetmar2019-08b737d1c1cb._portfolio_test.json 文件中 client_email 的电子邮件共享到您要访问的电子表格。
  3. 如果返回Google Sheets API has not been used in project ### before or it is disabled.的错误信息,请启用表格API。

如果这不能解决您的问题,我深表歉意。