2016-01-23 234 views
2

我有一個基於JavaScript的Google Apps腳本,可以遍歷Drive中的所有文件並將MS文件轉換爲Google格式。我正在使用Drive API上傳和轉換。一切似乎工作正常,除非我有一個文件在雲端硬盤子文件夾。當文件上傳回驅動器時,我無法定義父文件夾,因此它直接進入根目錄。Google Drive API上傳到父文件夾

我有一個父文件夾ID的句柄,但是當我向JSON字符串中添加「parents:folderID」時,在上傳路徑中看不到任何更改。

這是我的上傳和轉換功能,有沒有辦法修改這個來定義父文件夾?我完全失去了API ...任何人都可以協助嗎?

var uploadFile = JSON.parse(
UrlFetchApp.fetch("https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true", 
{ 
    method: "POST", 
    contentType: officeFile.getMimeType(), 
    payload: officeFile.getBlob().getBytes(), 
    parents: ['id' : folderID], <<<<<<<<<<<<<<<<< this line 
    headers: { 
    "Authorization" : "Bearer " + ScriptApp.getOAuthToken() 
    }, 
    muteHttpExceptions: true 
}).getContentText()); 
+0

綜觀[文檔】(https://developers.google.com/drive/v2/reference/files/insert#request-body)用於'父母[]'描述。我猜只要你設置了folderID,你應該可以上傳到文件夾。請仔細檢查您的folderID。另外,[Drive API](https://developers.google.com/drive/v3/web/about-sdk)已經有一個v3可用,所以我認爲這是值得關注的。祝你好運! – gerardnimo

+0

我肯定有父母ID正確(記錄根和子文件夾ID)。無論我如何格式化JSON字符串,文件總是上傳到根目錄。我不得不使用上傳到根目錄然後移動到子文件夾的荒謬工作。由於您無法在Drive API中「移動」文件,因此我必須「複製」並刪除原始文件。多麼糟糕的工作,但它完成了工作。我終於能夠完成劇本。這是一個完整的微軟轉換器,帶有權限映射的雲端硬盤。感謝評論gerardnimo。我會檢查出V3 API的未來更新! – Dougie

回答

6

隨着V3的API的父母參數的格式已經改變(似乎沒有列出總是讓事情變得有趣的文檔)。父母不再被添加爲{id:}對象。

var folderId = '0BwwA4oUTeiV1TGRPeTVjaWRDY1E'; 
var fileMetadata = { 
    'name': 'photo.jpg', 
    'parents': [ folderId ] 
}; 
var media = { 
    mimeType: 'image/jpeg', 
    body: fs.createReadStream('files/photo.jpg') 
}; 
drive.files.create({ 
    resource: fileMetadata, 
    media: media, 
    fields: 'id' 
}, function(err, file) { 
    if(err) { 
    // Handle error 
    console.log(err); 
    } else { 
    console.log('File Id: ', file.id); 
    } 
}); 

Full documentation

+0

謝謝你,它適合我 –

相關問題