-
-
Save mogsdad/8369881ffbaf0a4e4c0d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function test_listFilesInFolder() { | |
listFilesInFolder("StackOverflow"); | |
} | |
/** | |
* @OnlyCurrentDoc Limits the script to only accessing the current spreadsheet. | |
*/ | |
function onOpen() { | |
var ui = SpreadsheetApp.getUi(); | |
ui.createMenu('Custom Menu') | |
.addItem('List folder files', 'listFilesInFolder') | |
.addToUi(); | |
} | |
/** | |
* List all files in Google Drive folder. | |
* | |
* @param {string} folderName (optional) Name of folder on Google Drive | |
* | |
* Adapted from: | |
* http://ctrlq.org/code/19854-list-files-in-google-drive-folder | |
* https://gist.github.com/hubgit/3755293 | |
*/ | |
function listFilesInFolder(folderName) { | |
// If we have not been provided a folderName, assume we will interact with user. | |
var interactive = (typeof folderName === 'undefined'); | |
// Get name of folder to list | |
if (interactive) { | |
folderName = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL); | |
} | |
if (folderName === '') return; // No name provided, exit quietly | |
Logger.log(folderName); | |
var folders = DriveApp.getFoldersByName(folderName); | |
if (!folders.hasNext()) { | |
if (interactive) Browser.msgBox("Folder not found."); | |
return; | |
} | |
var folder = folders.next(); | |
var contents = folder.getFiles(); | |
// Find or add sheet with folder name | |
var ss = SpreadsheetApp.getActive(); | |
var sheet = ss.getSheetByName(folderName); | |
if (sheet) { | |
Logger.log("found"); | |
} | |
else { | |
sheet = ss.insertSheet(folderName); | |
} | |
sheet.clear(); | |
sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]); | |
// Loop over files in folder, using file iterator | |
while (contents.hasNext()) { | |
var file = contents.next(); | |
// if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET" | |
// // Skip displaying spreadsheets - I don't know why... | |
// continue; | |
// } | |
var data = [ | |
file.getName(), | |
file.getDateCreated(), | |
file.getSize(), | |
file.getUrl(), | |
//"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), | |
file.getDescription(), | |
niceFileType( file.getMimeType() ) | |
]; | |
sheet.appendRow(data); | |
} | |
} | |
/** | |
* Get nice, readable file type matching given MimeType. | |
* Refer to https://developers.google.com/apps-script/reference/base/mime-type | |
* | |
* @param {string} mimeType File type to match | |
* | |
* @return {string} Matched file type, or raw MimeType. | |
*/ | |
function niceFileType( mimeType ) { | |
// Supported file types stored in global fileType object for fast lookups. | |
if (typeof this.fileType === 'undefined') { | |
// Initialize global fileType object first time only. | |
this.fileType = {}; | |
this.fileType[MimeType.BMP] = "BMP"; | |
this.fileType[MimeType.CSS] = "CSS"; | |
this.fileType[MimeType.CSV] = "CSV"; | |
this.fileType[MimeType.FOLDER] = "Folder"; | |
this.fileType[MimeType.GIF] = "GIF"; | |
this.fileType[MimeType.GOOGLE_APPS_SCRIPT] = "Google Apps Script"; | |
this.fileType[MimeType.GOOGLE_DOCS] = "Google Doc"; | |
this.fileType[MimeType.GOOGLE_DRAWINGS] = "Google Drawing"; | |
this.fileType[MimeType.GOOGLE_FORMS] = "Google Form"; | |
this.fileType[MimeType.GOOGLE_SHEETS] = "Google Sheet"; | |
this.fileType[MimeType.GOOGLE_SLIDES] = "Google Slides"; | |
this.fileType[MimeType.HTML] = "HTML"; | |
this.fileType[MimeType.JAVASCRIPT] = "Javascript"; | |
this.fileType[MimeType.JPEG] = "JPEG"; | |
this.fileType[MimeType.MICROSOFT_EXCEL] = "XLSX"; | |
this.fileType[MimeType.MICROSOFT_EXCEL_LEGACY] = "XLS"; | |
this.fileType[MimeType.MICROSOFT_POWERPOINT] = "PPTX"; | |
this.fileType[MimeType.MICROSOFT_POWERPOINT_LEGACY] = "PPT"; | |
this.fileType[MimeType.MICROSOFT_WORD] = "DOCX"; | |
this.fileType[MimeType.MICROSOFT_WORD_LEGACY] = "DOC"; | |
this.fileType[MimeType.OPENDOCUMENT_GRAPHICS] = "OpenDoc Graphics"; | |
this.fileType[MimeType.OPENDOCUMENT_PRESENTATION] = "OpenDoc Presentation"; | |
this.fileType[MimeType.OPENDOCUMENT_SPREADSHEET] = "OpenDoc Spreadsheet"; | |
this.fileType[MimeType.OPENDOCUMENT_TEXT] = "OpenDoc Document"; | |
this.fileType[MimeType.PDF] = "PDF"; | |
this.fileType[MimeType.PLAIN_TEXT] = "Text"; | |
this.fileType[MimeType.PNG] = "PNG"; | |
this.fileType[MimeType.RTF] = "RTF"; | |
this.fileType[MimeType.SVG] = "SVG"; | |
this.fileType[MimeType.ZIP] = "Zip Archive"; | |
} | |
// If we know the given filetype, return its nice name. | |
return (this.fileType.hasOwnProperty(mimeType)) ? this.fileType[mimeType] : mimeType; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you so much for posting! This does exactly what I need it to.
Cheers