Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function onOpen() {
- var ui = SpreadsheetApp.getUi();
- ui.createMenu('Export Sheets')
- .addItem('Export All Sheets as CSV', 'exportAllSheetsAsCSV')
- .addToUi();
- }
- function convert2DArrayToCSV(data) {
- return data.map(row => row.join(',')).join('\n');
- }
- function exportAllSheetsAsCSV() {
- var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
- var sheets = spreadsheet.getSheets();
- // Get the "CSVs" folder in Google Drive or create it if it doesn't exist
- var parentFolderName = "CSVs";
- var parentFolder = getOrCreateFolder(parentFolderName);
- // Create the subfolder "LibertyBelle" within the "CSVs" folder or retrieve it if it already exists
- var subfolderName = "CircleOfOrion";
- var subfolder = getOrCreateFolder(subfolderName, parentFolder);
- // Set initial status in the Sheets status bar
- var progressStatus = 'Exporting Sheets: 0/' + sheets.length;
- spreadsheet.toast(progressStatus, 'Progress', -1);
- for (var i = 0; i < sheets.length; i++) {
- var sheet = sheets[i];
- var name = sheet.getName();
- var csv = convertSheetToCSV(spreadsheet, sheet);
- // Delete existing CSV file with the same name if found
- var existingFile = subfolder.getFilesByName(name + '.csv');
- while (existingFile.hasNext()) {
- var file = existingFile.next();
- subfolder.removeFile(file);
- }
- // Create a new file within the subfolder
- subfolder.createFile(name + '.csv', csv);
- // Update status in the Sheets status bar
- progressStatus = 'Exporting Sheets: ' + (i + 1) + '/' + sheets.length;
- spreadsheet.toast(progressStatus, 'Progress', -1);
- }
- // Clear the status in the Sheets status bar
- spreadsheet.toast('', 'Progress', -1);
- }
- function getOrCreateFolder(folderName, parentFolder) {
- var folders = parentFolder ? parentFolder.getFoldersByName(folderName) : DriveApp.getFoldersByName(folderName);
- if (folders.hasNext()) {
- return folders.next();
- } else {
- return parentFolder ? parentFolder.createFolder(folderName) : DriveApp.createFolder(folderName);
- }
- }
- function convertSheetToCSV(spreadsheet, sheet) {
- var data = sheet.getDataRange().getValues();
- var csv = '';
- for (var row = 0; row < data.length; row++) {
- for (var col = 0; col < data[row].length; col++) {
- var cellValue = data[row][col].toString();
- if (cellValue.indexOf(',') !== -1 || cellValue.indexOf('"') !== -1 || cellValue.indexOf('\n') !== -1) {
- cellValue = '"' + cellValue.replace(/"/g, '""') + '"';
- }
- csv += cellValue;
- if (col < data[row].length - 1) {
- csv += ',';
- }
- }
- csv += '\n';
- }
- return csv;
- }
Advertisement
Add Comment
Please, Sign In to add comment