使用API​​在Google界面上看不到的Google云端硬盘文件夹/文件

时间:2014-12-12 17:14:06

标签: google-drive-api

这很奇怪。我使用Google Drive API在Google云端硬盘中创建了一个文件夹,然后在那里上传了一个文件。我可以使用相同的API检索文件夹和文件(代码在所有方面都正常工作)。但是,当我转到Google Drive Web界面时,我似乎无法找到该文件夹​​或文件。该文件也不会同步到我的本地驱动器。 API或其他地方是否有设置“可见性”?

提前谢谢。

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是使用父类的列表数据类型可以解决此问题,例如:如果要在文件夹下创建一个文件夹(“ 1TBymLMZXPGkouw-lTQ0EccN0CMb_yxUB”),则python代码看起来像

drive_service = build('drive', 'v3', credentials=creds)
body={
            'name':'generated_folder',
            'parents':['1TBymLMZXPGkouw-lTQ0EccN0CMb_yxUB'],
            'mimeType':'application/vnd.google-apps.folder'
    }
doc = drive_service.files().create(body=body).execute()

答案 1 :(得分:0)

创建文件夹时,应确保设置父级,例如' root'。如果没有这个,它将不会出现在“我的驱动器”中。并且仅在搜索中(您是否尝试在UI中搜索?)

由于您已经创建了该文件夹,因此您可以更新该文件并将其提供给父根。

您可以使用Parents insert 'Try it now'示例对其进行测试。

将您的文件夹ID放在fileId框中,然后在请求正文中,在ID字段中添加 root

答案 2 :(得分:0)

我有同样的问题。原来是权限。当服务帐户上载文件时,服务帐户将设置为所有者,然后您无法从驱动器UI中看到这些文件。我在网上找到了解决方案(但似乎无法再找到它......) 这就是我做的......

这是C#,你的问题没有说明。您感兴趣的代码是在上传后获得响应正文后的权限内容...

FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
request.Upload();

//Start here...
Google.Apis.Drive.v2.Data.File file = request.ResponseBody;
Permission newPermission = new Permission();
newPermission.Value = "yourdriveaccount@domain.com";
newPermission.Type = "user";
newPermission.Role = "reader";
service.Permissions.Insert(newPermission, file.Id).Execute();

此后,驱动器UI上显示该文件。我尝试为角色指定“所有者”,就像api建议的那样,但我得到并且错误地说他们正在努力。我还没玩过其他的设置,(我昨晚的文学作品)。如果您对权限的任何其他组合有任何好运,请告诉我。

希望有所帮助

答案 3 :(得分:0)

private void SetFilePermission(string fileId)
    {
        Permission adminPermission = new Permission
        {
            EmailAddress = "test@gmail.com", // email address of drive where 
                                                //you want to see files
            Type = "user",
            Role = "owner"
        };
        var permissionRequest = _driveService.Permissions.Create(adminPermission, fileId);
        permissionRequest.TransferOwnership = true;   // to make owner (important)
        permissionRequest.Execute();
        Permission globalPermission = new Permission
        {
            Type = "anyone",
            Role = "reader"
        };
        var globalpermissionRequest = _driveService.Permissions.Create(globalPermission, fileId);
        globalpermissionRequest.Execute();
    }