如何使用 Google 云端硬盘 API 将文件传输到其他用户的云端硬盘?



我正在尝试传输当前属于我的谷歌文档,并将其移动到另一个用户的谷歌驱动器的根目录。两个帐户都在同一域中,我使用服务帐户访问所有用户。

一开始我尝试通过修改权限来做到这一点。这将允许第二个用户访问该文件,但它不会将其放入其驱动器的根目录或其他任何地方。如果用户想看到它,他们必须进行搜索。

然后我发现了一些信息,提到使用文件服务的补丁方法来更改文件的元数据,从而启动传输,但这不起作用。

我唯一确定的是属于我自己和我想要传输文件的用户的根文件夹的ID。这是我想做的,但失败了。

# Note: "service" is the connection to the domain service account 
service.files().patch(fileId='FILE_ID_GOES_HERE',
                                     body={'parents':[{'isRoot':True,'kind':'drive#parentReference','id':'user_two_root_folder_id'}]},
                                     removeParents=['user_one_root_folder_id'],
                                     addParents=['user_two_root_folder_id'])

我无法判断是否有任何错误,因为我没有得到任何错误消息。

如果您有什么建议,我将不胜感激。

好了,我明白了。看起来我只是使用了错误的API。您必须首先插入新的权限,然后删除旧的权限。这将把文件发送到新用户驱动器的根目录。

# Insert new permission first
new_permission = {
          'value': 'email_of_new_owner@mydomain.com',
          'type': 'user',
          'role': 'owner'
          }
run_new_permission = service.permissions().insert(fileId='FILE_ID_GOES_HERE',body=new_permission).execute()
# Then delete old permission
service.permissions().delete(fileId='FILE_ID_GOES_HERE', permissionId='PERMISSION_ID_GOES_HERE').execute()

是否返回任何类型的错误?

我认为你不能像那样"移动"文件。试文件。插入到他的驱动器中,然后从你自己的驱动器中删除。

我从来没有听说过有人试图把文件的位置打补丁给别人。TBH我看不出这是怎么回事,因为你必须用你的账户和他的账户同时认证服务,这是不可能的。尽管您说您使用的是一个服务帐户,可以访问两个帐户,但我非常希望API能够支持这一点。

你需要分两步完成,插入->到他,删除->从你

Update:我刚从一个同事那里听说他是Google Drive专家,他说他认为它坏了(补丁位置)。他做了一个快速测试,证实这是一个有问题的功能。它只返回403 - insufficient permissions

相关内容

  • 没有找到相关文章

最新更新