找不到Google表格的服务帐户退货

时间:2019-03-18 01:26:56

标签: service google-sheets google-sheets-api google-oauth2 service-accounts

我正在尝试使用服务帐户读取电子表格(我无法使用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

1 个答案:

答案 0 :(得分:1)

  • 使用OAuth2检索的访问令牌时,RecipeComponent.objects.filter(product=screw).count() 的电子表格可以检索值。
  • 使用通过服务帐户检索的访问令牌时,将返回$spreadsheet_id = '1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30';

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

确认点:

  1. 作为测试运行,请设置范围Error 404 (Not Found)!!1
    • 例如,它是$spreadsheet_range = '';
  2. 如果返回错误消息$spreadsheet_range = 'Sheet1',请确认如下。
    • The caller does not have permission的电子表格是否正在共享服务帐户的电子邮件。
    • 如果您没有将服务帐户共享到电子表格,请共享1TAWybckPrnWlQxBZh0ScDsFOvftwi2dvTBNGarSdY30文件中的client_email电子邮件到您要访问的电子表格。
  3. 如果返回错误消息readsheetmar2019-08b737d1c1cb._portfolio_test.json,请启用Sheets API。

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