2014-01-28 79 views
5

我使用Python 2.7和service account将Google云端硬盘中的文件复制到另一个文件夹中,并根据它的标题进行复制。这需要我执行五(5!)个命令:使用Google Drive API将文件复制到特定的父文件夹中?

  1. 按标题查找文件ID。按标题(files().list
  2. 查找父文件夹ID(files().list
  3. 复制文件(files().copy
  4. 所有权转让给一个真实帐户(files().insert
  5. 移动到父文件夹。 (parents().insert

这一切工作,但我想,以减少呼叫的数量和第一,这意味着高速缓存的ID,所以我没有打电话给files().list做。我试图做的下一件事情,特别是我在处理这个问题时,是如何在files().copy命令中设置父文件夹。该文档有一个可选的parents参数,如下所示:

收集包含此文件的父文件夹。设置此字段将把文件放入所有提供的文件夹中。在插入时,如果没有提供文件夹,文件将被放置在默认的根文件夹中。

虽然不说,我知道这意味着父母ID的因为这就是用于其他地方。但是,在客户端库中设置此数组不会产生任何效果:没有错误,并且该文件绝对不在正确的文件夹中。

newfile = {'title': newtitle, 'parents' : [ parentFolderId ]} 
service.files().copy(fileId=originalId, body=newfile).execute() 

有没有人有过运气with this?还有什么我失踪?

红利:转让复制命令中的所有权?也许我的服务帐户可能冒充我?

回答

7

啊哈!该parents阵列与id领域对象的列表:

newfile = {'title': newtitle, 'parents' : [ { "id" : parentFolderId } ]} 
service.files().copy(fileId=originalId, body=newfile).execute() 

如果/当我弄清楚如何设置权限,还我会更新这个。

这里有一个奇怪的提示是文件是仍然被复制到驱动器根目录以及我指定的父文件夹。

+0

+1好抓!这只是从一些麻烦救了我:) –

+0

如果有子文件夹那么我能做什么? –

相关问题