尝试将文件移至文件夹

时间:2018-03-27 22:20:57

标签: php google-drive-api google-sheets-api

我对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"
    }
}

有什么想法吗?

1 个答案:

答案 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