Créer et gérer des fichiers

Ce guide explique comment créer et gérer des fichiers dans Google Drive à l'aide de l'API Google Drive.

Créer un fichier

Pour créer un fichier dans Drive contenant du contenu (média), vous devez importer des données de fichier. Vous pouvez importer les métadonnées et le contenu d'un fichier dans une seule requête (importation en plusieurs parties) ou importer uniquement des médias (importation simple). Pour en savoir plus, consultez Importer des données de fichier.

Pour créer un fichier ne contenant ni métadonnées ni contenu, utilisez la create méthode sur la files ressource sans aucun paramètre.

Lorsque vous créez le fichier, la méthode renvoie une ressource files. Le fichier reçoit un kind de drive.file, un id, un name "Sans titre" et un mimeType de application/octet-stream. uploadType est marqué comme obligatoire, mais sa valeur par défaut est media. Vous n'avez donc pas besoin de le fournir.

Pour en savoir plus sur les limites applicables aux fichiers Drive, consultez Limites applicables aux fichiers et aux dossiers.

Les exemples de code suivants montrent comment créer un fichier sans métadonnées ni contenu :

Node.js

/**
 * Create an empty file.
 * @return {string} The created file's ID.
 */
async function createEmptyFile() {
  // Get credentials and build service
  // TODO(developer): Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});

  try {
    const response = await service.files.create({});
    console.log('File ID: ' + response.data.id);
    return response.data.id;
  } catch (err) {
    // TODO(developer): Handle error
    console.error(err);
  }
}

curl

curl -X POST 'https://www.googleapis.com/drive/v3/files' \
 -H 'Authorization: Bearer ACCESS_TOKEN'

Remplacez les éléments suivants :

  • ACCESS_TOKEN : jeton OAuth 2.0 de votre application.

Utiliser le paramètre fields

Si vous souhaitez spécifier les champs à renvoyer dans la réponse, vous pouvez définir le fields paramètre système avec n'importe quelle méthode de la res3/} source.files Si vous omettez le paramètre fields, le serveur renvoie un ensemble de champs par défaut spécifique à la méthode. Par exemple, la list méthode ne renvoie que les kind, id, name, mimeType, et resourceKey champs pour chaque fichier. Pour renvoyer d'autres champs, consultez Renvoyer des champs spécifiques.

Propriété du fichier

Lorsqu'un fichier est créé à l'aide de l'API Drive, la propriété dépend des identifiants d'authentification utilisés par l'application de la manière suivante :

  • Compte utilisateur (OAuth 2.0) : si l'application s'authentifie au nom d' un utilisateur, cet utilisateur devient le propriétaire du fichier. Le fichier se trouve alors dans son dossier "Mon Drive" ou dans un dossier spécifié. Il consomme son quota de stockage.

  • Compte de service : si l'application s'authentifie à l'aide d'un compte de service, ce compte est le propriétaire du fichier. Le fichier se trouve alors dans l'espace de stockage Drive dédié au compte de service. Les fichiers n'apparaissent pas dans d'autres comptes d'espace de stockage Drive, sauf s'ils sont explicitement partagés. Si le compte de service est supprimé, tous les fichiers dont il est propriétaire sont immédiatement supprimés.

    Si vous utilisez un compte de service, mais que vous souhaitez qu'un compte utilisateur spécifique soit propriétaire d'un fichier, utilisez la délégation au niveau du domaine. Cela permet au compte de service d'emprunter l'identité d'un utilisateur et de créer des fichiers en son nom. Pour en savoir plus, consultez Déléguer l'autorité au niveau du domaine au compte de service.

Pour en savoir plus sur les autorisations de fichier, consultez Partager des fichiers, des dossiers et des Drive.

Générer des ID à utiliser avec vos fichiers

La méthode generateIds sur la files ressource vous permet de pré-générer des ID de fichier uniques qui peuvent être utilisés lors de la création ou de la copie de fichiers et de dossiers dans Drive. Cela peut être utile lorsque vous devez contrôler les ID de fichier à partir de votre application, plutôt que de laisser Drive les attribuer automatiquement.

Vous pouvez définir le nombre d'ID générés à l'aide du count paramètre de requête. Si count n'est pas défini, 10 sont renvoyés par défaut. Le nombre maximal d'ID que vous pouvez demander est limité à 1 000.

Vous pouvez également désigner le space dans lequel les ID peuvent être utilisés et le type d' éléments pour lesquels les ID peuvent être utilisés.

Une fois qu'un ID est généré, il peut être transmis à la méthode create ou copy via le champ id. Cela garantit que le fichier créé ou copié utilise l'ID prédéterminé.

Si le fichier est créé ou copié, les nouvelles tentatives renvoient un code d'état HTTP 409 Conflict et aucun fichier en double n'est créé.

Notez que les ID pré-générés ne sont pas compatibles avec la création de fichiers Google Workspace, à l'exception des application/vnd.google-apps.drive-sdk et application/vnd.google-apps.folder types MIME. De même, les importations faisant référence à une conversion au format de fichier Google Workspace ne sont pas compatibles.

Les exemples de code suivants montrent comment pré-générer des ID de fichier uniques :

Node.js

/**
 * Pre-generate unique file IDs.
 */
async function generateFileIds() {
  // Get credentials and build service
  // TODO(developer): Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});

  try {
    const response = await service.files.generateIds({
      count: 10,
      space: 'drive'
    });
    const ids = response.data.ids;
    console.log('Generated IDs:');
    for (const id of ids) {
      console.log(id);
    }
  } catch (err) {
    // TODO(developer): Handle error
    console.error(err);
  }
}

curl

curl 'https://www.googleapis.com/drive/v3/files/generateIds?count=10&space=drive' \
 -H 'Authorization: Bearer ACCESS_TOKEN'

Remplacez les éléments suivants :

  • ACCESS_TOKEN : jeton OAuth 2.0 de votre application.

Créer des fichiers contenant uniquement des métadonnées

Les fichiers contenant uniquement des métadonnées ne contiennent aucun contenu. Les métadonnées sont des données (telles que name, mimeType et createdTime) qui décrivent le fichier. Les champs tels que name sont indépendants de l'utilisateur et apparaissent de la même manière pour chaque utilisateur, tandis que les champs tels que viewedByMeTime contiennent des valeurs spécifiques à l'utilisateur.

Un exemple de fichier contenant uniquement des métadonnées est un dossier avec le type MIME application/vnd.google-apps.folder. Pour en savoir plus, consultez Créer et remplir des dossiers. Un autre exemple est un raccourci qui pointe vers un autre fichier sur Drive avec le type MIME application/vnd.google-apps.shortcut. Pour en savoir plus, consultez Créer un raccourci vers un fichier Drive.

Gérer les images miniatures

Les miniatures aident les utilisateurs à identifier les fichiers Drive. Drive peut générer automatiquement des miniatures pour les types de fichiers courants, ou vous pouvez fournir une image miniature générée par votre application. Pour en savoir plus, consultez Importer des miniatures.

Copier un fichier existant

Pour copier un fichier et appliquer les mises à jour demandées, utilisez la copy méthode sur la files ressource. Pour trouver le fileId à copier, utilisez la list méthode.

Vous pouvez appliquer des mises à jour via la sémantique de patch, ce qui signifie que vous pouvez apporter des modifications partielles à une ressource. Vous devez définir explicitement les champs que vous souhaitez modifier dans votre requête. Tous les champs non inclus dans la requête conservent leurs valeurs existantes. Pour en savoir plus, consultez Utiliser des ressources partielles.

Vous pouvez prédéfinir l'ID de fichier du fichier copié à l'aide de la generateIds méthode. Pour en savoir plus, consultez Générer des ID à utiliser avec vos fichiers.

Notez que vous devez utiliser un champ d'application de l'API Drive approprié pour autoriser l' appel. Pour en savoir plus sur les champs d'application de Drive, consultez Choisir les champs d'application de l'API Google Drive.

Les exemples de code suivants montrent comment copier un fichier et modifier son nom :

Node.js

/**
 * Copy an existing file.
 * @return {string} The copied file's ID.
 */
async function copyFile() {
  // Get credentials and build service
  // TODO(developer): Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});

  try {
    const response = await service.files.copy({
      fileId: 'FILE_ID',
      requestBody: {
        name: 'FILE_COPY_NAME'
      }
    });
    console.log('Copied file ID: ' + response.data.id);
    return response.data.id;
  } catch (err) {
    // TODO(developer): Handle error
    console.error(err);
  }
}

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à copier.
  • FILE_COPY_NAME : nom du nouveau fichier.

curl

curl -X POST 'https://www.googleapis.com/drive/v3/files/FILE_ID/copy' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
    "name": "FILE_COPY_NAME"
 }'

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à copier.
  • ACCESS_TOKEN : jeton OAuth 2.0 de votre application.
  • FILE_COPY_NAME : nom du nouveau fichier.

Copier les commentaires

Pour copier les commentaires et les suggestions lorsque vous copiez un fichier Google Docs, Sheets ou Slides, définissez le copyComments paramètre de requête sur true. Drive ne copie que les commentaires ouverts (non résolus). Pour les autres types de fichiers, Drive ignore ce paramètre.

Pour en savoir plus sur les autorisations, l'attribution des commentaires et les considérations d'accès , consultez Limites et points à noter.

Limites et points à noter

Lorsque vous vous préparez à copier des fichiers, tenez compte des limites et points à noter suivants :

  • Autorisations :

    • L'objet DownloadRestrictionsMetadata de la ressource files détermine qui peut copier le fichier. Pour en savoir plus, consultez Empêcher les utilisateurs de télécharger, d'imprimer ou de copier votre fichier.
    • La ressource de champ capabilities.canCopy détermine si l'utilisateur peut copier un fichier. Pour en savoir plus, consultez Comprendre les fonctionnalités des fichiers.
    • Pour copier des commentaires, vous devez être autorisé à lire les commentaires du fichier source. Si vous n'êtes pas autorisé à lire les commentaires et que vous définissez copyComments sur true, l'opération de copie réussit, mais les commentaires ne sont pas copiés.
    • La copie de commentaires n'accorde pas aux auteurs des commentaires d'origine l'accès au nouveau fichier. Les listes de contrôle d'accès (LCA) du nouveau fichier sont indépendantes de celles du fichier source.
    • L'utilisateur qui a créé la copie est propriétaire du fichier copié. Aucun autre paramètre de partage du fichier source n'est répliqué. Si la copie est créée dans un dossier partagé, elle hérite des autorisations de ce dossier.
    • La propriété d'un fichier copié peut changer et la copie peut ne pas hériter des paramètres de partage du fichier d'origine. Il peut être nécessaire de réinitialiser ces paramètres.
  • Gestion des fichiers :

    • Certains fichiers, comme les raccourcis tiers, ne peuvent jamais être copiés.
    • Vous ne pouvez copier un fichier que dans un seul dossier parent. La spécification de plusieurs parents n'est pas prise en charge. Si le parents champ n'est pas spécifié, le fichier hérite de tous les parents détectables du fichier source.
    • Même si un dossier est un type de fichier, vous ne pouvez pas copier un dossier. Créez plutôt un dossier de destination et définissez le champ parents des fichiers existants sur le dossier de destination. Vous pouvez ensuite supprimer le dossier source d'origine.
    • Sauf si un nouveau nom de fichier est spécifié, la méthode copy produit un fichier portant le même nom que l'original.
    • Une utilisation excessive de copy peut entraîner le dépassement des limites de quota de l'API Drive. Pour en savoir plus, consultez Limites d'utilisation.

Voici quelques étapes suivantes que vous pouvez essayer :