Skip to content

Instantly share code, notes, and snippets.

@rapartipoorna
Last active April 6, 2022 03:16
Show Gist options
  • Select an option

  • Save rapartipoorna/c4237ae1d8bf7ec98509c6221028ad41 to your computer and use it in GitHub Desktop.

Select an option

Save rapartipoorna/c4237ae1d8bf7ec98509c6221028ad41 to your computer and use it in GitHub Desktop.
[ Apps script ] Creates folders according files and script will move files into created folders. for enabling trigger run trigger.gs file which is added to this gist
function main(){
var q = "mimeType='application/vnd.google-apps.spreadsheet' or mimeType='application/vnd.google-apps.presentation' or mimeType='application/vnd.google-apps.document'"
var files = DriveApp.searchFiles(q)
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
if(filename.toString().split('_').lastIndexOf('PC')!=-1){
var folder = getOrCreateFolder("Poorna")
file.makeCopy(folder)
}
if(filename.toString().split('_').lastIndexOf('AK')!=-1){
var folder = getOrCreateFolder("Anil")
file.makeCopy(folder)
// file.moveTo(folder)
}
if(filename.toString().split('_').lastIndexOf('MG')!=-1){
var folder = getOrCreateFolder("Mounika")
file.makeCopy(folder)
// file.moveTo(folder)
}
if(filename.toString().split('_').lastIndexOf('SS')!=-1){
var folder = getOrCreateFolder("Saketh")
file.makeCopy(folder)
// file.moveTo(folder)
}
}
}
function getOrCreateSubFolder(baseFolder,folderArray) {
if (folderArray.length == 0) {
return baseFolder;
}
var nextFolderName = folderArray.shift();
var nextFolder = null;
var folders = baseFolder.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
if (folder.getName() == nextFolderName) {
nextFolder = folder;
break;
}
}
if (nextFolder == null) {
// Folder does not exist - create it.
nextFolder = baseFolder.createFolder(nextFolderName);
}
return getOrCreateSubFolder(nextFolder,folderArray);
}
function getFolderByPath(path) {
var parts = path.split("/");
if (parts[0] == '') parts.shift(); // Did path start at root, '/'?
var folder = DriveApp.getRootFolder();
for (var i = 0; i < parts.length; i++) {
var result = folder.getFoldersByName(parts[i]);
if (result.hasNext()) {
folder = result.next();
} else {
throw new Error( "folder not found." );
}
}
return folder;
}
/**
* Returns the GDrive folder with the given name or creates it if not existing.
*/
function getOrCreateFolder(folderName) {
var folder;
try {
folder = getFolderByPath(folderName);
} catch(e) {
var folderArray = folderName.split("/");
folder = getOrCreateSubFolder(DriveApp.getRootFolder(), folderArray);
}
return folder;
}
function Enabletrigger() {
const RUN_AT_HOUR = 9;
const enableDriveWatch = () => {
const triggerName = "main"
const [trigger = null] = ScriptApp.getProjectTriggers().filter((t) => t.getHandlerFunction() === triggerName);
if (trigger === null) {
ScriptApp.newTrigger(triggerName).timeBased().everyDays(1).atHour(RUN_AT_HOUR).create();
}
};
enableDriveWatch()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment