Skip to content

Instantly share code, notes, and snippets.

@mogsdad
Forked from hubgit/list-files-in-folder.js
Last active November 14, 2023 16:27
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mogsdad/8369881ffbaf0a4e4c0d to your computer and use it in GitHub Desktop.
Save mogsdad/8369881ffbaf0a4e4c0d to your computer and use it in GitHub Desktop.
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;
}
@Three-D
Copy link

Three-D commented Nov 2, 2016

Thank you so much for posting! This does exactly what I need it to.

Cheers

@diegovelezg
Copy link

Thanks! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment