L'API Google Drive accepte plusieurs types d'actions de téléchargement et d'exportation, comme indiqué dans le tableau suivant :
| Actions de téléchargement |
|
||||
| Actions d'exportation |
|
Avant de télécharger ou d'exporter le contenu d'un fichier, vérifiez que les utilisateurs peuvent le télécharger à l'aide du champ capabilities.canDownload de la ressource files.
Pour obtenir des descriptions des types de fichiers mentionnés ici, y compris les fichiers blob et Google Workspace, consultez Types de fichiers.
Le reste de ce document fournit des instructions détaillées pour effectuer ces types d'actions de téléchargement et d'exportation.
Télécharger le contenu d'un fichier blob
Pour télécharger un fichier blob stocké sur Drive, utilisez la méthode files.get avec l'ID du fichier à télécharger et le paramètre d'URL alt=media. Le paramètre d'URL alt=media indique au serveur qu'un téléchargement de contenu est demandé comme format de réponse alternatif.
Le paramètre d'URL alt=media est un paramètre système disponible dans toutes les API REST Google. Si vous utilisez une bibliothèque cliente de l'API Drive, vous n'avez pas besoin de définir explicitement ce paramètre, car la méthode de la bibliothèque cliente ajoute le paramètre d'URL alt=media à la requête HTTP sous-jacente.
Les exemples de code suivants montrent comment utiliser la méthode files.get pour télécharger un fichier :
Apps Script
/**
* Downloads a file from Drive.
* @param {string} fileId The ID of the file to download.
* @return {Blob} The file content as a Blob.
*/
function downloadFile(fileId) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
- FILE_NAME : nom du fichier de sortie.
Les téléchargements de fichiers lancés depuis votre application doivent être autorisés avec un champ d'application qui permet l'accès en lecture au contenu du fichier. Par exemple, une application utilisant le champ d'application drive.readonly.metadata n'est pas autorisée à télécharger le contenu des fichiers.
Les exemples de code de la bibliothèque cliente utilisent le champ d'application de fichier drive restreint, qui permet aux utilisateurs d'afficher et de gérer tous vos fichiers Drive. Pour en savoir plus sur les habilitations Drive, consultez Choisir les habilitations de l'API Google Drive.
Les utilisateurs disposant des autorisations owner (pour les fichiers Mon Drive) ou organizer (pour les fichiers Drive partagé) peuvent restreindre le téléchargement via l'objet DownloadRestrictionsMetadata. Pour en savoir plus, consultez Empêcher les autres utilisateurs de télécharger, d'imprimer ou de copier votre fichier.
Les fichiers identifiés comme abusifs (logiciels malveillants, par exemple) ne peuvent être téléchargés que par leur propriétaire.
De plus, le paramètre de requête get acknowledgeAbuse=true doit être inclus pour indiquer que l'utilisateur a pris connaissance des risques liés au téléchargement de logiciels potentiellement indésirables ou d'autres fichiers abusifs. Votre application doit avertir l'utilisateur de manière interactive avant d'utiliser ce paramètre de requête.
Téléchargement partiel
Le téléchargement partiel consiste à télécharger uniquement une partie spécifique d'un fichier. Vous pouvez spécifier la partie du fichier que vous souhaitez télécharger en utilisant une plage d'octets avec l'en-tête Range. Exemple :
Range: bytes=500-999
Télécharger le contenu d'un fichier blob dans une version antérieure
Vous ne pouvez télécharger que les révisions de contenu de fichiers blob marquées comme "Conserver indéfiniment". Si vous souhaitez télécharger une révision, définissez-la d'abord sur "Conserver indéfiniment". Pour en savoir plus, consultez Spécifier les révisions à enregistrer pour éviter la suppression automatique.
Pour télécharger le contenu des fichiers blob dans une version antérieure, utilisez la méthode revisions.get avec l'ID du fichier à télécharger, l'ID de la révision et le paramètre d'URL alt=media. Le paramètre d'URL alt=media indique au serveur qu'un téléchargement de contenu est demandé comme format de réponse alternatif. Comme files.get, la méthode revisions.get accepte également le paramètre de requête facultatif acknowledgeAbuse et l'en-tête Range. Pour en savoir plus, consultez Gérer les opérations de longue durée.
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- REVISION_ID : ID de la révision à télécharger.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
- FILE_NAME : nom du fichier de sortie.
Télécharger le contenu d'un fichier blob dans un navigateur
Pour télécharger le contenu des fichiers blob stockés sur Drive dans un navigateur, au lieu de passer par l'API, utilisez le champ webContentLink de la ressource files. Si l'utilisateur a accès au téléchargement du fichier, un lien permettant de télécharger le fichier et son contenu est renvoyé. Vous pouvez rediriger un utilisateur vers cette URL ou la proposer sous forme de lien cliquable.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier pour lequel obtenir le lien de téléchargement.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
Télécharger le contenu d'un fichier blob à l'aide d'opérations de longue durée
Pour télécharger le contenu des fichiers blob à l'aide d'opérations de longue durée (LRO), utilisez la méthode files.download avec l'ID du fichier à télécharger. Vous pouvez éventuellement définir l'ID de la révision.
Il s'agit du seul moyen de télécharger des fichiers Google Vids. Si vous essayez d'exporter des fichiers Google Vids, l'erreur fileNotExportable s'affiche.
Pour en savoir plus, consultez Gérer les opérations de longue durée.
curl
La commande curl suivante lance une opération de longue durée et renvoie une réponse JSON. Pour télécharger le fichier ou interroger cette LRO, vous devez effectuer une autre requête à l'aide de l'ID renvoyé pour obtenir l'URL du contenu. Vous pouvez ensuite envoyer une requête curl finale à cette URL pour télécharger le fichier. Pour en savoir plus, consultez Gérer les opérations de longue durée.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=video/mp4" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
Exporter le contenu d'un document Google Workspace
Pour exporter le contenu en octets d'un document Google Workspace, utilisez la méthode files.export avec l'ID du fichier à exporter et le type MIME approprié. Le contenu exporté est limité à 10 Mo.
Les exemples de code suivants montrent comment utiliser la méthode files.export pour exporter un document Google Workspace au format PDF :
Apps Script
/**
* Exports a Google Workspace document.
* @param {string} fileId The ID of the file to export.
* @param {string} mimeType The MIME type to export to.
* @return {Blob} The exported content as a Blob.
*/
function exportPdf(fileId, mimeType) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=' + encodeURIComponent(mimeType);
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME.pdf"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
- FILE_NAME : nom du fichier de sortie.
Les exemples de code de la bibliothèque cliente utilisent le champ d'application restreint drive qui permet aux utilisateurs d'afficher et de gérer tous vos fichiers Drive. Pour en savoir plus sur les habilitations Drive, consultez Choisir les habilitations de l'API Google Drive.
Les exemples de code déclarent également le type MIME d'exportation en tant que application/pdf. Pour obtenir la liste complète de tous les types MIME d'exportation compatibles avec chaque document Google Workspace, consultez Types MIME d'exportation pour les documents Google Workspace.
Exporter le contenu d'un document Google Workspace dans un navigateur
Pour exporter le contenu d'un document Google Workspace dans un navigateur, utilisez le champ exportLinks de la ressource files. Selon le type de document, un lien permettant de télécharger le fichier et son contenu est renvoyé pour chaque type MIME disponible. Vous pouvez rediriger un utilisateur vers une URL ou la proposer sous forme de lien cliquable.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier pour lequel obtenir le lien de téléchargement.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
Exporter le contenu d'un document Google Workspace dans une version antérieure dans un navigateur
Pour exporter le contenu d'un document Google Workspace dans une version antérieure d'un navigateur, utilisez la méthode revisions.get avec l'ID du fichier à télécharger et l'ID de la révision pour générer un lien d'exportation à partir duquel vous pouvez effectuer le téléchargement. Si l'utilisateur a accès au téléchargement du fichier, un lien permettant de télécharger le fichier et son contenu est renvoyé. Vous pouvez rediriger un utilisateur vers cette URL ou la proposer sous forme de lien cliquable.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- REVISION_ID : ID de la révision à télécharger.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.
Exporter le contenu de documents Google Workspace à l'aide d'opérations de longue durée
Pour exporter le contenu d'un document Google Workspace à l'aide d'opérations de longue durée (LRO), utilisez la méthode files.download avec l'ID du fichier à télécharger et l'ID de la révision. Pour en savoir plus, consultez Gérer les opérations de longue durée.
curl
La commande curl suivante lance une opération de longue durée et renvoie une réponse JSON. Pour télécharger le fichier ou interroger cette LRO, vous devez effectuer une autre requête à l'aide de l'ID renvoyé pour obtenir l'URL du contenu. Vous pouvez ensuite envoyer une requête curl finale à cette URL pour télécharger le fichier. Pour en savoir plus, consultez Gérer les opérations de longue durée.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=MIME_TYPE&revisionId=REVISION_ID" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- MIME_TYPE : type MIME vers lequel exporter.
- REVISION_ID : ID de la révision à télécharger.
- ACCESS_TOKEN : jeton d'accès qui permet d'accéder à l'API.