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 = "https://docs.google.com/folder/d/1234567890/edit"; // 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); return; } var time = EXPIRY_TIME; var expireAt = new Date(time.substr(0,4), time.substr(5,2)-1, time.substr(8,2), time.substr(11,2), time.substr(14,2)); if ( !isNaN ( expireAt.getTime() ) ) ScriptApp.newTrigger("autoExpire").timeBased().at(expireAt).create(); else 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