####### Code.gs ####### function doGet(e) { //create folder in root if ( e.parameter.func == "folder" ) { return createFolder(e.parameter.name); } // create folder in a folder else if (e.parameter.func == "folderToFolder" ) { return createFolderInFolder(e.parameter.name,e.parameter.targetID) } // create sheet in a folder else if (e.parameter.func == "sheetToFolder" ) { return createSheetInFolder(e.parameter.name,e.parameter.targetID) } //return list of folder names and IDs from folder else if ( e.parameter.func == "getListFoldersInFolder" ) { return getListOfFoldersInFolder(e.parameter.targetID); } //return list of file names and IDs from folder else if ( e.parameter.func == "getListFilesInFolder" ) { return getListOfFilesInFolder(e.parameter.targetID); } //delete a file else if ( e.parameter.func == "deleteFile" ) { return deleteFile(e.parameter.fileID); } //delete a folder, but only if it is empty else if ( e.parameter.func == "deleteFolder" ) { return deleteFolder(e.parameter.targetID); } //get grid names from sheet else if ( e.parameter.func == "getGridNames" ) { return getGridNames(e.parameter.sheetID); } //get data from sheet else if ( e.parameter.func == "getSheetData" ) { return getSheetData(e.parameter.sheetID,e.parameter.gridName); } //get range data from sheet else if ( e.parameter.func == "getSheetRange" ) { return getSheetRangeData(e.parameter.sheetID,e.parameter.gridName,e.parameter.data); } //query sheet else if ( e.parameter.func == "querySheet" ) { return querySheet(e.parameter.sheetID,e.parameter.gridName,e.parameter.query); } //call utility property else if ( e.parameter.func == "utility" ) { return gdcutil(e.parameter.sheetID,e.parameter.gridName,e.parameter.call); } //return data in row else if ( e.parameter.func == "rowData" ) { return returnRowData(e.parameter.sheetID,e.parameter.gridName,e.parameter.row); } //return data in column else if ( e.parameter.func == "columnData" ) { return returnColumnData(e.parameter.sheetID,e.parameter.gridName,e.parameter.column); } //set data sheet else if ( e.parameter.func == "setDataToSheet" ) { return setDataToSheet(e.parameter.sheetID,e.parameter.gridName,e.parameter.data); } //set data to cell else if ( e.parameter.func == "setDataToCell" ) { return setDataToCell(e.parameter.sheetID,e.parameter.gridName,e.parameter.data,e.parameter.a1Range); } //set data to range else if ( e.parameter.func == "setDataToRange" ) { return setDataToRange(e.parameter.sheetID,e.parameter.gridName,e.parameter.data,e.parameter.a1Range); } //append row of data to specified sheet/grid else if ( e.parameter.func == "appendRowToSheet" ) { return appendRowToSheet(e.parameter.sheetID,e.parameter.gridName,e.parameter.data); } //append row of data as List to specified sheet/grid (allows for commas as decimal points) else if ( e.parameter.func == "appendRowToSheetEurope" ) { return appendRowToSheetEurope(e.parameter.sheetID,e.parameter.gridName,e.parameter.data); } //append row of data to specified sheet/grid for Europe (use semi-colon as delimiter) else if ( e.parameter.func == "appendRowToSheetEuropeAlt" ) { return appendRowToSheet(e.parameter.sheetID,e.parameter.gridName,e.parameter.data); } //append Column Data else if ( e.parameter.func == "appendColumnToSheet" ) { return appendColumnToSheet(e.parameter.sheetID,e.parameter.gridName,e.parameter.data); } //insert row with data else if ( e.parameter.func == "insertRowData" ) { return insertRowData(e.parameter.sheetID,e.parameter.gridName,e.parameter.row,e.parameter.data); } //insert column with data else if ( e.parameter.func == "insertColumnData" ) { return insertColumnData(e.parameter.sheetID,e.parameter.gridName,e.parameter.column,e.parameter.data); } //add new grid to sheet else if ( e.parameter.func == "newGridForSheet" ) { return insertGridToSheet(e.parameter.name,e.parameter.sheetID); } //delete row else if ( e.parameter.func == "deleteRow" ) { return deleteRow(e.parameter.sheetID,e.parameter.gridName,e.parameter.row); } //delete column else if ( e.parameter.func == "deleteColumn" ) { return deleteColumn(e.parameter.sheetID,e.parameter.gridName,e.parameter.column); } } ############ Functions.gs ############ //createFolder(e.parameter.name); function createFolder(name) { var newFolder = DriveApp.createFolder(name); var output = "[" + newFolder.getName() + "," + newFolder.getId() +"]"; return ContentService.createTextOutput(output); } //createFolderInFolder(e.parameter.name,e.parameter.targetID) function createFolderInFolder(name,targetID) { var targetFolder = DriveApp.getFolderById(targetID); var newFolder = targetFolder.createFolder(name); var output = "[" + newFolder.getName() +","+ newFolder.getId() + "]"; return ContentService.createTextOutput(output); } //createSheetInFolder(e.parameter.name,e.parameter.targetID) function createSheetInFolder(name,targetID) { var newSpreadsheet = SpreadsheetApp.create(name,20,10); folder=DriveApp.getFolderById(targetID); var file = DriveApp.getFileById(newSpreadsheet.getId()); folder.addFile(file); DriveApp.removeFile(file); var output = "[" + newSpreadsheet.getName() + "," + newSpreadsheet.getId() + "]"; return ContentService.createTextOutput(output); } // return list of folders in a folder function getListOfFoldersInFolder(targetID) { folderList = []; var parentFolder = DriveApp.getFolderById(targetID); var folders = parentFolder.getFolders(); while (folders.hasNext()) { var folder = folders.next(); folderList.push([folder.getName(),folder.getId()]); } var output = JSON.stringify(folderList); return ContentService.createTextOutput(output); } // return list of files in a folder function getListOfFilesInFolder(targetID) { filesList = []; var parentFolder = DriveApp.getFolderById(targetID); var files = parentFolder.getFiles(); while (files.hasNext()) { var file = files.next(); filesList.push([file.getName(),file.getId()]); } var output = JSON.stringify(filesList); return ContentService.createTextOutput(output); } //delete a file by its ID function deleteFile(fileID) { DriveApp.getFileById(fileID).setTrashed(true); return ContentService.createTextOutput("Deleted File: " + targetID); } //delete a folder by its ID, but only if the folder is empty function deleteFolder(targetID) { filesList=""; var parentFolder = DriveApp.getFolderById(targetID); var files = parentFolder.getFiles(); while (files.hasNext()) { var file = files.next(); filesList += file.getName(); } if (filesList == "") { DriveApp.getFolderById(targetID).setTrashed(true); return ContentService.createTextOutput('Folder Deleted: ' + targetID); } else { return ContentService.createTextOutput('Folder has Files, NOT Deleted'); } } //get all the grid names from a specified sheet function getGridNames(sheetID) { var grids = []; var ss = SpreadsheetApp.openById(sheetID); var shs = ss.getSheets(); for (var i=0 ; i