Servizio Drive avanzato

Il servizio Drive avanzato consente di utilizzare l'API Google Drive in Apps Script. Proprio come il servizio Drive integrato di Apps Script, questa API consente agli script di creare, trovare e modificare file e cartelle su 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.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la documentazione di riferimento per l'API Google Drive. Come tutti i servizi avanzati di Apps Script, il servizio Drive avanzato utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per ulteriori informazioni, vedi Come vengono determinate le firme dei metodi.

Per segnalare problemi e trovare ulteriore supporto, consulta la guida di assistenza per l'API Drive.

Codice campione

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

Carica i 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);
  }
}

Elenco cartelle

Il seguente esempio di codice mostra come elencare le cartelle di primo livello nella proprietà Drive dell'utente. Nota l'utilizzo di 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);
}

Elenco 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 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;
  const 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à 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 al file una proprietà personalizzata che sia visibile anche ad altre app, utilizza invece il campo properties. Per ulteriori informazioni, consulta Aggiungere proprietà di 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);
  }
}