Service Drive avancé

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Le service Drive avancé vous permet d'utiliser l'API Web Google Drive dans Apps Script. Tout comme le service Drive intégré d'Apps Script, cette API permet aux scripts de créer, de rechercher et de modifier des fichiers et des dossiers dans Google Drive. Dans la plupart des cas, le service intégré est plus facile à utiliser, mais ce service avancé fournit quelques fonctionnalités supplémentaires, y compris l'accès à des propriétés de fichier personnalisées ainsi qu'aux révisions des fichiers et des dossiers.

Reference

Pour en savoir plus sur ce service, consultez la documentation de référence sur l'API Web Google Drive. Comme tous les services avancés d'Apps Script, le service Drive avancé utilise les mêmes objets, méthodes et paramètres que l'API publique. Pour en savoir plus, consultez Détermination des signatures de méthode.

Pour signaler des problèmes et trouver une assistance supplémentaire, consultez le guide d'assistance Drive v2.

Exemple de code

L'exemple de code ci-dessous utilise la version 2 de l'API.

Importer des fichiers

L'exemple suivant montre comment enregistrer un fichier dans le Drive d'un utilisateur.

avancé/drive.gs
/**
 * Uploads a new file to the user's Drive.
 */
function uploadFile() {
  try {
    // Makes a request to fetch a URL.
    const image = UrlFetchApp.fetch('http://goo.gl/nd7zjB').getBlob();
    let file = {
      title: 'google_logo.png',
      mimeType: 'image/png'
    };
    // Insert new files to user's Drive
    file = Drive.Files.insert(file, image);
    Logger.log('ID: %s, File size (bytes): %s', file.id, file.fileSize);
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed to upload file with error %s', err.message);
  }
}

Répertorier les dossiers

L'exemple suivant montre comment lister les dossiers racines dans le Drive de l'utilisateur. Notez l'utilisation de jetons de page pour accéder à la liste complète des résultats.

avancé/drive.gs
/**
 * Lists the top-level folders in the user's Drive.
 */
function listRootFolders() {
  const query = '"root" in parents and trashed = false and ' +
    'mimeType = "application/vnd.google-apps.folder"';
  let folders;
  let pageToken = null;
  do {
    try {
      folders = Drive.Files.list({
        q: query,
        maxResults: 100,
        pageToken: pageToken
      });
      if (!folders.items || folders.items.length === 0) {
        Logger.log('No folders found.');
        return;
      }
      for (let i = 0; i < folders.items.length; i++) {
        const folder = folders.items[i];
        Logger.log('%s (ID: %s)', folder.title, folder.id);
      }
      pageToken = folders.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      Logger.log('Failed with error %s', err.message);
    }
  } while (pageToken);
}

Répertorier les révisions

L'exemple suivant montre comment répertorier les révisions d'un fichier donné. Notez que certaines propriétés des révisions ne sont disponibles que pour certains types de fichiers. Par exemple, Google Workspace les fichiers d'application ne consomment pas d'espace de stockage dans Google Drive et renvoient donc une taille de 0.

avancé/drive.gs
/**
 * Lists the revisions of a given file. Note that some properties of revisions
 * are only available for certain file types. For example, G Suite application
 * files do not consume space in Google Drive and thus list a file size of 0.
 * @param {string} fileId The ID of the file to list revisions for.
 */
function listRevisions(fileId) {
  try {
    const revisions = Drive.Revisions.list(fileId);
    if (!revisions.items || revisions.items.length === 0) {
      Logger.log('No revisions found.');
      return;
    }
    for (let i = 0; i < revisions.items.length; i++) {
      const revision = revisions.items[i];
      const date = new Date(revision.modifiedDate);
      Logger.log('Date: %s, File size (bytes): %s', date.toLocaleString(),
          revision.fileSize);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed with error %s', err.message);
  }
}

Ajouter des propriétés personnalisées

L'exemple suivant montre comment ajouter une propriété personnalisée à un fichier. Contrairement aux propriétés de document d'Apps Script, les propriétés de fichier personnalisées de Drive sont accessibles en dehors d'Apps Script et d'autres applications (si la visibilité est définie sur PUBLIC).

avancé/drive.gs
/**
 * Adds a custom property to a file. Unlike Apps Script's DocumentProperties,
 * Drive's custom file properties can be accessed outside of Apps Script and
 * by other applications (if the visibility is set to PUBLIC).
 * @param {string} fileId The ID of the file to add the property to.
 */
function addCustomProperty(fileId) {
  try {
    const property = {
      key: 'department',
      value: 'Sales',
      visibility: 'PUBLIC'
    };
    // Adds a property to a file
    Drive.Properties.insert(property, fileId);
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed with error %s', err.message);
  }
}