有没有办法使用google drive API v3获取原生文件(谷歌文档)的内容?我知道API v2支持使用exportLinks属性,但它不再起作用或已被删除。
答案 0 :(得分:6)
您还可以使用文件的webContentLink
属性在云端硬盘中下载包含二进制内容(非谷歌驱动器文件)的文件。来自https://developers.google.com/drive/v3/reference/files:
用于在浏览器中下载文件内容的链接。这是 仅适用于云端硬盘中具有二进制内容的文件。
示例(我使用方法get()
从我的文件中检索webContentLink
):
gapi.client.drive.files.get({
fileId: id,
fields: 'webContentLink'
}).then(function(success){
var webContentLink = success.result.webContentLink; //the link is in the success.result object
//success.result
}, function(fail){
console.log(fail);
console.log('Error '+ fail.result.error.message);
})
使用google驱动器文件,导出方法可用于获取这些文件:https://developers.google.com/drive/v3/reference/files/export
此方法需要具有2个必需属性(fileId和mimeType)作为参数的对象。
可以看到可用的mimeType
列表here
示例:
gapi.client.drive.files.export({
'fileId' : id,
'mimeType' : 'text/plain'
}).then(function(success){
console.log(success);
//success.result
}, function(fail){
console.log(fail);
console.log('Error '+ fail.result.error.message);
})
您可以使用gapi.client.drive.files.get
和alt:"media"
阅读非Google文档文件内容(例如文本文件)。 Official example。我的例子:
function readFile(fileId, callback) {
var request = gapi.client.drive.files.get({
fileId: fileId,
alt: 'media'
})
request.then(function(response) {
console.log(response); //response.body contains the string value of the file
if (typeof callback === "function") callback(response.body);
}, function(error) {
console.error(error)
})
return request;
}
答案 1 :(得分:3)
如果您使用files.export,则不会获得任何可让您按v3 Migration guide中所述下载文件的链接。
例如使用try-it,我只得到一个MiMetype响应但没有可下载的链接:
[application/vnd.oasis.opendocument.text data]
解决方法是直接下载。只需将FILE_ID
替换为您的Google文档ID,然后在浏览器中执行即可。通过这个,我能够导出Google文档文件。
https://docs.google.com/document/d/FILE_ID/export?format=doc
致labnol's guide的解决方法。
答案 2 :(得分:2)
对于api的v3,您可以使用导出方法https://developers.google.com/drive/v3/reference/files/export