未找到 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
。
如果我的理解正确,请确认以下几点。
确认点:
- 作为测试运行,请设置范围
$spreadsheet_range = '';
。
- 例如
$spreadsheet_range = 'Sheet1'
.
- 如果返回
The caller does not have permission
的错误信息,请确认如下。
1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30
的电子表格是否共享服务帐号的邮箱。
- 如果您没有将服务帐户共享到电子表格,请将
readsheetmar2019-08b737d1c1cb._portfolio_test.json
文件中 client_email
的电子邮件共享到您要访问的电子表格。
- 如果返回
Google Sheets API has not been used in project ### before or it is disabled.
的错误信息,请启用表格API。
如果这不能解决您的问题,我深表歉意。
我正在尝试使用服务帐户读取传播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
。
如果我的理解正确,请确认以下几点。
确认点:
- 作为测试运行,请设置范围
$spreadsheet_range = '';
。- 例如
$spreadsheet_range = 'Sheet1'
.
- 例如
- 如果返回
The caller does not have permission
的错误信息,请确认如下。1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30
的电子表格是否共享服务帐号的邮箱。- 如果您没有将服务帐户共享到电子表格,请将
readsheetmar2019-08b737d1c1cb._portfolio_test.json
文件中client_email
的电子邮件共享到您要访问的电子表格。
- 如果返回
Google Sheets API has not been used in project ### before or it is disabled.
的错误信息,请启用表格API。
如果这不能解决您的问题,我深表歉意。