Service 找不到google sheets返回的服务帐户
我正在尝试使用服务帐户读取电子表格(我无法使用OAuth,因为该进程将在服务器上运行,以定期检查工作表数据) 我尝试了几种方法。如果我使用oauth遵循示例,我可以看到图纸值。但是,我需要在后台不使用任何GUI的情况下运行脚本 我找到了这个教程 我已经创建了一个项目,服务帐户,添加了查看器角色,与服务帐户电子邮件共享了电子表格。生成密钥。 似乎测试程序可以连接到谷歌服务,但当它请求电子表格时,最终结果是“404未找到” 错误:PHP致命错误:未捕获异常“Google\u服务\u异常”和消息' 错误404(未找到)!!1Service 找不到google sheets返回的服务帐户,service,google-sheets,google-sheets-api,google-oauth,service-accounts,Service,Google Sheets,Google Sheets Api,Google Oauth,Service Accounts,我正在尝试使用服务帐户读取电子表格(我无法使用OAuth,因为该进程将在服务器上运行,以定期检查工作表数据) 我尝试了几种方法。如果我使用oauth遵循示例,我可以看到图纸值。但是,我需要在后台不使用任何GUI的情况下运行脚本 我找到了这个教程 我已经创建了一个项目,服务帐户,添加了查看器角色,与服务帐户电子邮件共享了电子表格。生成密钥。 似乎测试程序可以连接到谷歌服务,但当它请求电子表格时,最终结果是“404未找到” 错误:PHP致命错误:未捕获异常“Google\u服务\u异常”和消息' 错
- 当使用OAuth2检索到的访问令牌时,
$Spreadsheet_id='1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30'的电子表格代码>可以检索值
- 使用服务帐户检索的访问令牌时,
错误404(未找到)!!返回1
$spreadsheet\u range=''代码>。
- 例如,它是
$spreadsheet\u range='Sheet1'
的电子表格是否正在共享服务帐户的电子邮件1tawybckprnwlqxbzh0scdsfovfttwi2dvtbngarsdy30
- 如果您没有将服务帐户共享到电子表格中,请将
文件中的readsheetmar2019-08b737d1c1cb.\u portfolio\u test.json
的电子邮件共享到您想要访问的电子表格中client\u email
Google Sheets API的错误消息在project#####之前未被使用或已被禁用。
返回,请启用Sheets API如果这不是您的问题的解决方案,我很抱歉。您是否检查过您的文件是否存在与id相同的文件?是的。如果我使用oauth示例,我可以访问相同的文件。我可以通过链接查看文件。问题是,当我使用服务帐户时,它返回“未找到”。这可能是一些权限问题,但我不知道如何解决它;设置了一个有效的选项卡名称非常感谢。缺少的部分是它需要一个工作表/选项卡名称。我做了你的第一步,它突然像一个魅力。“我想我以前试过,但一开始可能做得不对。”菲尔博士谢谢你的回答。我很高兴你的问题解决了。
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());