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