【发布时间】:2019-03-18 01:26:55
【问题描述】:
我正在尝试使用服务帐户读取电子表格(我无法使用有效的 OAuth,因为该过程将在服务器上运行以定期检查工作表数据)
我尝试了几种方法。如果我按照使用 oauth 的示例进行操作,我可以看到工作表值。但是,我需要在后台没有任何 GUI 的情况下运行脚本。
我找到了这个教程https://github.com/juampynr/google-spreadsheet-reader 我创建了一个项目、服务帐户、添加了查看者角色,并与服务帐户电子邮件共享了电子表格。生成了密钥。 似乎测试程序可以连接到 google 服务,但在它请求电子表格的那一刻,最终结果是“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
【问题讨论】:
-
您是否检查过您的文件是否存在与 id 相同的文件?
-
是的。如果我使用 oauth 示例,我可以访问相同的文件。我可以使用链接查看文件。问题是当我使用服务帐户时,它返回“未找到”。可能这是一些权限问题,但我不知道如何解决它。
-
解决方案是确保 $spreadsheet_range = '';设置了有效的选项卡名称
标签: service google-sheets google-sheets-api google-oauth service-accounts