Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Service 找不到google sheets返回的服务帐户_Service_Google Sheets_Google Sheets Api_Google Oauth_Service Accounts - Fatal编程技术网

Service 找不到google sheets返回的服务帐户

Service 找不到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异常”和消息' 错

我正在尝试使用服务帐户读取电子表格(我无法使用OAuth,因为该进程将在服务器上运行,以定期检查工作表数据)

我尝试了几种方法。如果我使用oauth遵循示例,我可以看到图纸值。但是,我需要在后台不使用任何GUI的情况下运行脚本

我找到了这个教程 我已经创建了一个项目,服务帐户,添加了查看器角色,与服务帐户电子邮件共享了电子表格。生成密钥。 似乎测试程序可以连接到谷歌服务,但当它请求电子表格时,最终结果是“404未找到”

错误:PHP致命错误:未捕获异常“Google\u服务\u异常”和消息' 错误404(未找到)!!1

  • 当使用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());