Servizio Drive avanzato

per gestire file e cartelle, incluse proprietà personalizzate e revisioni.

Il servizio Drive avanzato ti consente di utilizzare l' API Google Drive in Google Apps Script. Analogamente al servizio Drive integrato di Apps Script, questa API consente agli script di creare, trovare e modificare file e cartelle in Google Drive. Nella maggior parte dei casi, il servizio integrato è più facile da utilizzare, ma questo servizio avanzato offre alcune funzionalità aggiuntive, tra cui l'accesso alle proprietà dei file personalizzate e alle revisioni di file e cartelle.

Questo è un servizio avanzato che deve essere abilitato prima dell'uso.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la documentazione di riferimento per l'API Drive. Come tutti i servizi avanzati in Apps Script, il servizio Drive avanzato utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per ulteriori informazioni, consulta Come vengono determinate le firme dei metodi. Inoltre, i metodi denominati delete nell'API Drive sono denominati remove in nel servizio avanzato (ad esempio Drive.Permissions.remove()), poiché delete è una parola riservata in JavaScript.

Per segnalare problemi e trovare altro supporto, consulta la guida al supporto dell'API Drive.

Codice campione

Gli esempi di codice in questa sezione utilizzano la versione 3 dell'API.

Carica file

Il seguente esempio di codice mostra come salvare un file nel Drive di un utente.

advanced/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 = {
      name: "google_logo.png",
      mimeType: "image/png",
    };
    // Create a file in the user's Drive.
    file = Drive.Files.create(file, image, { fields: "id,size" });
    console.log("ID: %s, File size (bytes): %s", file.id, file.size);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log("Failed to upload file with error %s", err.message);
  }
}

Crea una cartella

Il seguente esempio di codice mostra come creare una cartella in Drive.

/**
 * Creates a new folder.
 */
function createFolder() {
  var folderMetadata = {
    'name': 'New Folder',
    'mimeType': 'application/vnd.google-apps.folder'
  };
  var folder = Drive.Files.create(folderMetadata);
  Logger.log('Folder ID: ' + folder.id);
}

Cercare i file

Il seguente esempio di codice mostra come cercare i file utilizzando una stringa di query.

/**
 * Searches for files with a specific name.
 */
function searchFiles() {
  var query = 'name contains "Project Plan" and trashed = false';
  var files = Drive.Files.list({
    'q': query,
    'fields': 'files(id, name, mimeType)'
  });
  if (files.files && files.files.length > 0) {
    for (var i = 0; i < files.files.length; i++) {
      var file = files.files[i];
      Logger.log('%s (ID: %s)', file.name, file.id);
    }
  } else {
    Logger.log('No files found.');
  }
}

Elenca cartelle

Il seguente esempio di codice mostra come elencare le cartelle di primo livello nel Drive dell'utente. Tieni presente l'utilizzo dei token di pagina per accedere all'elenco completo dei risultati.

advanced/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,
        pageSize: 100,
        pageToken: pageToken,
      });
      if (!folders.files || folders.files.length === 0) {
        console.log("All folders found.");
        return;
      }
      for (let i = 0; i < folders.files.length; i++) {
        const folder = folders.files[i];
        console.log("%s (ID: %s)", folder.name, folder.id);
      }
      pageToken = folders.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log("Failed with error %s", err.message);
    }
  } while (pageToken);
}

Elenca revisioni

Il seguente esempio di codice mostra come elencare le revisioni di un determinato file. Tieni presente che alcuni file possono avere diverse revisioni e devi utilizzare i token di pagina per accedere all'elenco completo dei risultati.

advanced/drive.gs
/**
 * Lists the revisions of a given file.
 * @param {string} fileId The ID of the file to list revisions for.
 */
function listRevisions(fileId) {
  let revisions;
  let pageToken = null;
  do {
    try {
      revisions = Drive.Revisions.list(fileId, {
        fields: "revisions(modifiedTime,size),nextPageToken",
      });
      if (!revisions.revisions || revisions.revisions.length === 0) {
        console.log("All revisions found.");
        return;
      }
      for (let i = 0; i < revisions.revisions.length; i++) {
        const revision = revisions.revisions[i];
        const date = new Date(revision.modifiedTime);
        console.log(
          "Date: %s, File size (bytes): %s",
          date.toLocaleString(),
          revision.size,
        );
      }
      pageToken = revisions.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log("Failed with error %s", err.message);
    }
  } while (pageToken);
}

Aggiungi proprietà dei file

Il seguente esempio di codice utilizza il campo appProperties per aggiungere una proprietà personalizzata a un file. La proprietà personalizzata è visibile solo allo script. Per aggiungere una proprietà personalizzata al file che sia visibile anche ad altre app, utilizza invece il campo properties. Per ulteriori informazioni, consulta Aggiungere proprietà dei file personalizzate.

advanced/drive.gs
/**
 * Adds a custom app 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; however, appProperties are only visible to the script.
 * @param {string} fileId The ID of the file to add the app property to.
 */
function addAppProperty(fileId) {
  try {
    let file = {
      appProperties: {
        department: "Sales",
      },
    };
    // Updates a file to add an app property.
    file = Drive.Files.update(file, fileId, null, {
      fields: "id,appProperties",
    });
    console.log(
      "ID: %s, appProperties: %s",
      file.id,
      JSON.stringify(file.appProperties, null, 2),
    );
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log("Failed with error %s", err.message);
  }
}

Aggiungi un utente a un file

Il seguente esempio di codice mostra come aggiungere un utente come editor a un file e sopprimere la notifica via email.

/**
 * Adds a user to a file as an editor without sending an email notification.
 */
function addEditor() {
  var fileId = '1234567890abcdefghijklmnopqrstuvwxyz';
  var userEmail = 'bob@example.com';
  var request = {
    'role': 'writer',
    'type': 'user',
    'emailAddress': userEmail
  };
  Drive.Permissions.create(request, fileId, {
    'sendNotificationEmail': false
  });
}