From 01b8cbee4aefa9eadd577afa656fee628f3a9d41 Mon Sep 17 00:00:00 2001 From: stupidcomputer Date: Mon, 24 Jun 2024 07:00:53 -0500 Subject: [PATCH] add UI, add spreadsheet init logic --- Code.gs | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ appsscript.json | 16 ++++++++++++ macros.gs | 22 ++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 Code.gs create mode 100644 appsscript.json create mode 100644 macros.gs diff --git a/Code.gs b/Code.gs new file mode 100644 index 0000000..b7dac31 --- /dev/null +++ b/Code.gs @@ -0,0 +1,68 @@ +function onOpen() { + var ui = SpreadsheetApp.getUi(); + + ui.createMenu('Demographic Manager') + .addItem('Initialize Spreadsheet', 'spread_init') + .addItem('Regenerate Reporting Spreadsheets', 'regenerate') + .addToUi() +} + +function spread_init() { + var ui = SpreadsheetApp.getUi(); + // This is a destructive operation, so prompt the user. + var response = ui.alert( + 'Initialize spreadsheet', + 'Warning: if you click yes, the spreadsheet will delete data inside itself. Make a backup before running this operation. Continue?', + ui.ButtonSet.YES_NO_CANCEL + ); + + if (response == ui.Button.NO) { + ui.alert("Canceled the initialization of the spreadsheet.") + return; + } else if (response == ui.Button.CANCEL) { + ui.alert("Canceled the initialization of the spreadsheet.") + return; + } + + var spreadsheet = SpreadsheetApp.getActiveSpreadsheet() + var sheetsToRemove = spreadsheet.getSheets() + for (var sheet = 0; sheet < sheetsToRemove.length; sheet++) { + try { + spreadsheet.deleteSheet(sheetsToRemove[sheet]); + } catch { // ran out of spreadsheets to nuke, so rename it to the first thing we need + spreadsheet.getSheets()[0].setName("*Demographic Data") + } + } + + // take care of demographic data layout + var sheet = spreadsheet.getSheets()[0] + sheet.getRange('A1').activate(); + sheet.getCurrentCell().setValue('Site Name'); + sheet.getRange('B1').activate(); + sheet.getCurrentCell().setValue('Count'); + sheet.getRange('C1').activate(); + sheet.getCurrentCell().setValue('Age'); + sheet.getRange('D1').activate(); + sheet.getCurrentCell().setValue('Gender'); + sheet.getRange('E1').activate(); + sheet.getCurrentCell().setValue('Ethnicity'); + sheet.getRange('F1').activate(); + sheet.getCurrentCell().setValue('Race'); + sheet.getRange('F2').activate(); + + var newSheet = spreadsheet.insertSheet(); + newSheet.setName("*Site Information") + newSheet.getRange('A1').activate(); + newSheet.getCurrentCell().setValue('Site Name'); + newSheet.getRange('B1').activate(); + newSheet.getCurrentCell().setValue('Date'); + newSheet.getRange('C1').activate(); + newSheet.getCurrentCell().setValue('Time'); + newSheet.getRange('D1').activate(); + newSheet.getCurrentCell().setValue('Those Present'); + newSheet.getRange('E1').activate(); + newSheet.getCurrentCell().setValue('Data Leads'); + newSheet.getRange('F1').activate(); + newSheet.getCurrentCell().setValue('Who Collected?'); + newSheet.getRange('F2').activate(); +} \ No newline at end of file diff --git a/appsscript.json b/appsscript.json new file mode 100644 index 0000000..8fcb161 --- /dev/null +++ b/appsscript.json @@ -0,0 +1,16 @@ +{ + "timeZone": "America/Chicago", + "dependencies": { + }, + "exceptionLogging": "STACKDRIVER", + "runtimeVersion": "V8", + "sheets": { + "macros": [{ + "menuName": "Untitled Macro", + "functionName": "UntitledMacro" + }, { + "menuName": "Untitled Macro 2", + "functionName": "UntitledMacro2" + }] + } +} \ No newline at end of file diff --git a/macros.gs b/macros.gs new file mode 100644 index 0000000..40cfbb5 --- /dev/null +++ b/macros.gs @@ -0,0 +1,22 @@ +function UntitledMacro() { + var spreadsheet = SpreadsheetApp.getActive(); + spreadsheet.getRange('A1:F1').activate(); + spreadsheet.getRange('A1:F1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); +}; + +function UntitledMacro2() { + var spreadsheet = SpreadsheetApp.getActive(); + spreadsheet.getRange('A1').activate(); + spreadsheet.getCurrentCell().setValue('Site Name'); + spreadsheet.getRange('B1').activate(); + spreadsheet.getCurrentCell().setValue('Count'); + spreadsheet.getRange('C1').activate(); + spreadsheet.getCurrentCell().setValue('Age'); + spreadsheet.getRange('D1').activate(); + spreadsheet.getCurrentCell().setValue('Gender'); + spreadsheet.getRange('E1').activate(); + spreadsheet.getCurrentCell().setValue('Ethnicity'); + spreadsheet.getRange('F1').activate(); + spreadsheet.getCurrentCell().setValue('Race'); + spreadsheet.getRange('F2').activate(); +}; \ No newline at end of file