2014-01-28 107 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

如果有子文件夾那麼我能做什麼? –

相關問題