existe-t-il un moyen d'obtenir le contenu des fichiers natifs (Google Documents) à l'aide de l'API Google Drive v3? Je sais que l'API v2 prend en charge cela avec la propriété exportLinks, mais cela ne fonctionne plus ou a été supprimé.
Pour la v3 de l'API, vous pouvez utiliser la méthode d'exportation https://developers.google.com/drive/v3/reference/files/export
Vous pouvez également télécharger des fichiers à contenu binaire (fichier non google drive) dans Drive à l'aide de l'attribut webContentLink
d'un fichier. De https://developers.google.com/drive/v3/reference/files :
Un lien pour télécharger le contenu du fichier dans un navigateur. Cette option n'est disponible que pour les fichiers à contenu binaire dans Drive.
Un exemple (j'utilise la méthode get()
pour récupérer le webContentLink
de mon fichier):
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);
})
Avec les fichiers Google Drive, la méthode d'exportation peut être utilisée pour obtenir ces fichiers: https://developers.google.com/drive/v3/reference/files/export
Cette méthode nécessite un objet avec 2 attributs obligatoires (fileId
et mimeType
) comme paramètres. Une liste des mimeType
s disponibles peut être vue ici
Exemple:
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);
})
Vous pouvez lire le contenu d'un fichier doc non google (par exemple un fichier texte) avec gapi.client.drive.files.get
avec alt:"media"
. exemple officiel . Mon exemple:
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;
}
Si vous utilisez files.export , vous n'obtiendrez aucun lien vous permettant de télécharger le fichier comme indiqué dans Guide de migration v .
Par exemple, en utilisant le try-it, je n'ai reçu qu'une réponse MiMetype mais pas de lien téléchargeable:
[application/vnd.oasis.opendocument.text data]
Solution de contournement pour cela est un téléchargement direct. Remplacez simplement FILE_ID
avec votre ID de fichier Google Doc et exécutez-le dans le navigateur. Grâce à cela, j'ai pu exporter des fichiers Google docs.
https://docs.google.com/document/d/FILE_ID/export?format=doc
Crédits à guide de labnol pour la solution de contournement.