2016-01-23 254 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

谢谢你,它适合我 –

相关问题