Skip to content

Instantly share code, notes, and snippets.

@rmeekers
Last active September 24, 2019 09:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rmeekers/18d843edb1bf36ddf6116135cff33f44 to your computer and use it in GitHub Desktop.
Save rmeekers/18d843edb1bf36ddf6116135cff33f44 to your computer and use it in GitHub Desktop.
/**
* Set of functions to import CSV files into a Google Sheet
* Imports CSV as text, freezes the first row, sets it bold and removes empty rows and columns.
*/
var settings = {
CSVFolderID: '',
singleFileID: '',
CSVSeparator: ';'
}
/**
* @function importCSVInBulkFromGoogleDrive
* Imports multiple CSV files from a folder in Google Drive
* into a single Google Spreadsheet as new sheets.
*/
function importCSVInBulkFromGoogleDrive() {
var folder = DriveApp.getFolderById(settings.CSVFolderID);
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString(), settings.CSVSeparator);
var sheet = SpreadsheetApp.getActive().insertSheet().setName(filename);
sheet.getRange(1, 1, csvData.length, csvData[0].length).setNumberFormat('@').setValues(csvData);
var maxColumns = sheet.getMaxColumns();
var lastColumn = sheet.getLastColumn();
var maxRows = sheet.getMaxRows();
var lastRow = sheet.getLastRow();
sheet.setFrozenRows(1);
sheet.getRange(1, 1, 1, maxColumns).setFontWeight('bold');
sheet.autoResizeColumns(1, maxColumns);
// Remove empty columns
if (maxColumns - lastColumn != 0){
sheet.deleteColumns(lastColumn+1, maxColumns-lastColumn);
}
// Remove empty rows
if (maxRows-lastRow != 0){
sheet.deleteRows(lastRow+1, maxRows-lastRow);
}
}
}
/**
* @function importSingleCSVFromGoogleDrive
* Imports a single CSV file from Google Drive
* into a single Google Spreadsheet as a new sheet.
*/
function importSingleCSVFromGoogleDrive() {
var file = DriveApp.getFileById(settings.singleFileID);
var filename = file.getName();
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString(), ';');
var sheet = SpreadsheetApp.getActive().insertSheet().setName(filename);
sheet.getRange(1, 1, csvData.length, csvData[0].length).setNumberFormat('@').setValues(csvData);
var maxColumns = sheet.getMaxColumns();
var lastColumn = sheet.getLastColumn();
var maxRows = sheet.getMaxRows();
var lastRow = sheet.getLastRow();
sheet.setFrozenRows(1);
sheet.getRange(1, 1, 1, maxColumns).setFontWeight('bold');
sheet.autoResizeColumns(1, maxColumns);
// Remove empty columns
if (maxColumns - lastColumn != 0){
sheet.deleteColumns(lastColumn+1, maxColumns-lastColumn);
}
// Remove empty rows
if (maxRows-lastRow != 0){
sheet.deleteRows(lastRow+1, maxRows-lastRow);
}
}
/**
* @function removeAllSheets
* Removes all sheets except for Sheet1
*/
function removeAllSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (i = 0; i < sheets.length; i++) {
switch(sheets[i].getSheetName()) {
case "Sheet1":
break;
default:
ss.deleteSheet(sheets[i]);
}
}
}
/**
* @function sortGoogleSheets
* Sorts sheets by name A-Z
*/
function sortGoogleSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Store all the worksheets in this array
var sheetNameArray = [];
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
sheetNameArray.push(sheets[i].getName());
}
sheetNameArray.sort();
// Reorder the sheets.
for( var j = 0; j < sheets.length; j++ ) {
ss.setActiveSheet(ss.getSheetByName(sheetNameArray[j]));
ss.moveActiveSheet(j + 1);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment