Advanced Drive Service
Stay organized with collections
Save and categorize content based on your preferences.
AI-generated Key Takeaways
-
The advanced Drive service in Apps Script allows interaction with the Google Drive API for file and folder manipulation.
-
This service offers extra features compared to the built-in Drive service, such as access to custom file properties and revisions.
-
The advanced Drive service must be enabled before use and uses the same objects, methods, and parameters as the public Drive API.
-
Sample code is provided for common tasks like uploading files, listing folders, listing revisions, and adding file properties using API version 3.
The advanced Drive service lets you use the Google Drive API in Apps Script. Much like Apps Script's built-in Drive service, this API allows scripts to create, find, and modify files and folders in Google Drive. In most cases, the built-in service is easier to use, but this advanced service provides a few extra features, including access to custom file properties as well as revisions for files and folders.
Reference
For detailed information on this service, see the reference documentation for the Google Drive API. Like all advanced services in Apps Script, the advanced Drive service uses the same objects, methods, and parameters as the public API. For more information, see How method signatures are determined.
To report issues and find other support, see the Drive API support guide.
Sample code
The code samples in this section use version 3 of the API.
Upload files
The following code sample shows how to save a file to a user's Drive.
/** * Uploads a new file to the user's Drive. */ functionuploadFile(){ try{ // Makes a request to fetch a URL. constimage=UrlFetchApp.fetch('http://goo.gl/nd7zjB').getBlob(); letfile={ 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); } }
List folders
The following code sample shows how to list the top-level folders in the user's Drive. Note the use of page tokens to access the full list of results.
/** * Lists the top-level folders in the user's Drive. */ functionlistRootFolders(){ constquery='"root" in parents and trashed = false and '+ 'mimeType = "application/vnd.google-apps.folder"'; letfolders; letpageToken=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(leti=0;i < folders.files.length;i++){ constfolder=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); }
List revisions
The following code sample shows how to list the revisions for a given file. Note that some files can have several revisions and you should use page tokens to access the full list of results.
/** * Lists the revisions of a given file. * @param {string} fileId The ID of the file to list revisions for. */ functionlistRevisions(fileId){ letrevisions; constpageToken=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(leti=0;i < revisions.revisions.length;i++){ constrevision=revisions.revisions[i]; constdate=newDate(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); }
Add file properties
The following code sample uses the appProperties field to add a custom
property to a file. The custom property is only visible to the script. To add a
custom property to the file that's also visible to other apps, use the
properties field, instead. For more information, see Add custom file
properties.
/** * 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. */ functionaddAppProperty(fileId){ try{ letfile={ '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); } }