Change Folder Permissions with Google Apps Script

This Google Apps Script will change the access permissions of the specified Google Drive folder from Public to Private at a custom date and time. When you initialize the script, it creates a time-based trigger that is responsible for change the shared permissions.

Google Scripts has a simple file.removeViewer(user) method to remove one or more users from a shared File but it doesn’t seem to work when the file /folder is shared with Public. Thus the workaround, as used in this script, is to create a copy of the shared folder and delete the original one thus expiring the shared links.

// Enter the full URL of the public Google Docs folder
var FOLDER_URL = "";

// Enter the expiry date in YYYY-MM-DD HH:MM format (local time zone)
var EXPIRY_TIME  = "2013-02-15 18:30"; 

function getFolderID() {

  var search  = /docs\.google\.com\/folder\/d\/(.*)\//g;
  var results = search.exec(FOLDER_URL);

  var id = "0";

  if (search.lastIndex) 
    id = results[1];

  return id;  

function Start() {

  var ID = getFolderID();

  if (ID == "0") {
    MailApp.sendEmail(Session.getActiveUser(), "Error", 
                      "Check the URL of the shared Google Docs folder : " + FOLDER_URL);

  var time = EXPIRY_TIME;

  var expireAt = new Date(time.substr(0,4),

  if ( !isNaN ( expireAt.getTime() ) )
    MailApp.sendEmail(Session.getActiveUser(), "Error", 
                      "The auto-expiry date isn't in proper format. Please use YYYY-MM-DD HH:MM");


function autoExpire() {
  try {
    var folder = DocsList.getFolderById(Initialize());
    if (folder) {
      var name = folder.getName();
      var copy = DocsList.createFolder(name + " (Private)");      
      var files = folder.getFiles();
      for (var i=0; i<files.length; i++) {
      MailApp.sendEmail(Session.getActiveUser(), "Success", 
                        "Your shared files are no longer public and the new (private) URL is :" + copy.getUrl());
  catch (e) {
    MailApp.sendEmail(Session.getActiveUser(), "Error", 
                      "Could not set the expiry date for your file. " + e.toString());