我正在尝试使用服务帐户读取电子表格(我无法使用OAuth,该方法有效,因为该过程将在服务器上运行以定期检查工作表数据)
我尝试了几种方法。如果我使用oauth遵循示例,则可以看到工作表值。但是,我需要在后台运行没有任何GUI的脚本。
我已找到本教程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
答案 0 :(得分:1)
RecipeComponent.objects.filter(product=screw).count()
的电子表格可以检索值。$spreadsheet_id = '1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30';
。如果我的理解正确,请确认以下几点。
Error 404 (Not Found)!!1
。
$spreadsheet_range = '';
。$spreadsheet_range = 'Sheet1'
,请确认如下。
The caller does not have permission
的电子表格是否正在共享服务帐户的电子邮件。1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30
文件中的client_email
电子邮件到您要访问的电子表格。readsheetmar2019-08b737d1c1cb._portfolio_test.json
,请启用Sheets API。如果这不是解决您问题的方法,我深表歉意。