Servizio Drive avanzato

Il servizio avanzato di Drive ti 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 usare, ma questo servizio avanzato offre alcune funzionalità extra, tra cui l'accesso a proprietà di file personalizzate e 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 in Apps Script, il servizio avanzato di Drive utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per ulteriori informazioni, consulta Come vengono determinate le firme dei metodi.

Per segnalare problemi e ricevere ulteriore assistenza, consulta la guida di assistenza dell'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 nel Drive dell'utente. Tieni presente che vengono utilizzati 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;
  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 visibile anche ad altre app, utilizza invece il campo properties. Per maggiori 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);
  }
}