我对Google API一般都很陌生,所以请耐心等待。
我有一个PHP脚本,我可以通过Google表格PHP API成功创建Google表格并对其进行操作。
创建新的Google表格后,我想将其移至具有我希望工作表所具有的权限级别的文件夹(我的域中所有具有链接的用户都可以读取/写入工作表)。
从环顾四周来看,我认为这样做的方法是通过Google Drive API,而不是直接通过Google表格。
我的问题是,当我尝试将我刚刚创建的工作表移动到我在Google云端硬盘中创建的文件夹时,我得到了一个"不足的权限"错误。
我已经仔细检查过在Google API控制台中启用了Drive API。我没有设置Drive UI Integration,因为这似乎与从命令行运行的脚本无关。
这是我用来尝试将表单移动到新文件夹的代码:
define('SCOPES', implode(' ', array( \Google_Service_Sheets::SPREADSHEETS)));
...
$this->client = new \Google_Client();
$this->client->setApplicationName("My Application Name");
$this->client->setScopes(SCOPES);
$this->client->setAuthConfig("/full/path/to/my/client_secret.json");
...
$this->client->setAccessType('offline');
$driveService = new \Google_Service_Drive($this->client);
$emptyFileMetadata = new \Google_Service_Drive_DriveFile();
$file = $driveService->files->get(
$this->getGoogleSheetID(),
array('fields' => 'parents')
);
$previousParents = join(',', $file->parents);
$file = $driveService->files->update(
"{ID of Google Sheet I just created}",
$emptyFileMetadata,
array(
'addParents' => "{id of folder I created manually in Google Drive}",
'removeParents' => $previousParents,
'fields' => 'id, parents'
)
);
当此代码运行时,我看到一个例外,其中包括:
PHP Fatal error: Uncaught exception 'Google_Service_Exception' with message '{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
有什么想法吗?
答案 0 :(得分:1)
如指南中所述,使用Files.update在文件夹之间移动文件至少需要其中一个授权范围:
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/drive.appdata
https://www.googleapis.com/auth/drive.scripts
https://www.googleapis.com/auth/drive.metadata