我必须在google驱动器上阅读excel文件。我需要自动连接到谷歌驱动器,而不提示任何形式...机器人必须阅读文件...我有这个代码:
$service_account_file = dirname(__FILE__) . '/key-85ac95ab1e62.json';
$spreadsheet_id = 'the_id_inside_the_url_of_the_file';
$spreadsheet_range = 'Sheet1!A1:A1';
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $service_account_file);
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);
$result = $service->spreadsheets_values->get($spreadsheet_id, $spreadsheet_range);
var_dump($result->getValues());
出了点问题......我解释了我是如何生成key-*.json
文件的:
在Google Console Developer
我点击了服务帐户,然后我创建了一个新的并下载了json ..这个json是key-*.json
文件。我在我的项目中添加了这个文件(正如你在第一行看到的那样)...在这里我复制了Account Service Id
我将在以后使用...
现在我解释一下我如何获得spreadheet_id
...我继续使用我的谷歌驱动器,右键单击该文件,然后我与Account Service Id
共享(之前复制过)并且已经有了网址生成...如果我复制并浏览浏览器中的url一切正常但项目中没有...我从url中获取spreadsheet_id
这是我收到的错误:
PHP Fatal error: Uncaught Google_Service_Exception: {
"error": {
"code": 404,
"message": "Requested entity was not found.",
"errors": [
{
"message": "Requested entity was not found.",
"domain": "global",
"reason": "notFound
}
],
"status": "NOT_FOUND
}
}
怎么了?该文件存在,我可以在浏览器中看到它使用我在php文件中使用的相同的URL ...所以我认为这是一个连接或登录问题......
任何想法?
答案 0 :(得分:0)
这是服务帐户的常见问题。请参阅其中任何https://stackoverflow.com/search?q=404+service+account
简单来说,服务帐户不与您用来创建帐户的Google帐户相同。要么不使用服务帐户,要么将文件从自己的帐户共享到服务帐户,以便访问它。