const FOLDER_NAME = 'This is a name';
/**
* Gets the folder URL by a given folder name
* @param {string} folderName The name of the folder
* @returns The folder's URL
* @customfunction
*/
function getFolderUrl(folderName = FOLDER_NAME) {
if (folderName != '') {
let folder = createsFolder(folderName);
try {
let folderUrl = folder.getUrl();
console.log(folderUrl);
return folderUrl;
}
catch(error) {
console.log(error);
}
}
else {
return '';
}
}
/**
* Creates a folder if it doesn't exist by a given folder name
* @param {string} folderName The name of the folder to be created
* @returns The folder
* @customfunction
*/
function createsFolder(folderName) {
let folderExist = checkIfFolderExist(folderName);
if (folderExist != true) {
console.log('Folder named "' + folderName + '" doesnt exist. Trying to create the folder...');
try {
let folder = DriveApp.createFolder(folderName);
console.log('Folder with name: ' + folderName + ' created.');
return folder;
}
catch(error) {
console.log('Couldnt create the folder with name "' + folderName + '". Error details: ' + error);
}
}
else {
console.log('Folder named "' + folderName + '" already exist. Trying to retrieve the folder...');
try {
let folders = DriveApp.getFoldersByName(folderName);
let folder = folders.next();
console.log('Folder with name: ' + folderName + ' retrieved.');
return folder;
}
catch(error) {
console.log('Couldnt retrieve the folder with name "' + folderName + '". Error details: ' + error);
}
}
}
/**
* Check if a folder already exist by a given folder name
* @param {string} folderName The name of the folder to be checked
* @returns {boolean} true if a folder with the given name already exists, false if it doesn't.
* @customfunction
*/
function checkIfFolderExist(folderName) {
let foldersName = [];
let folders = DriveApp.getFolders();
while (folders.hasNext()) {
try {
let folder = folders.next();
foldersName.push(folder.getName())
}
catch(error) {
ui.alert(error);
}
}
if (foldersName.indexOf(folderName) != -1) {
return true;
}
else {
return false;
}
}
And this is the appsscript.json:
{
"timeZone": "Australia/Brisbane",
"dependencies": {
"enabledAdvancedServices": []
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}