From 7316ba08d7bdbd13a076cc52f9bbd46cd7ac278c Mon Sep 17 00:00:00 2001 From: Ben Miller Date: Mon, 4 Nov 2024 21:48:31 -0700 Subject: [PATCH] enable changes based on template, refactor newSku --- src/newSku.ts | 20 ++++++++++++++++---- src/onEdit.ts | 2 +- src/productTemplate.ts | 15 +++++++++++---- src/sheetUtils.ts | 2 +- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/newSku.ts b/src/newSku.ts index 649a3a1..d98cd45 100644 --- a/src/newSku.ts +++ b/src/newSku.ts @@ -1,19 +1,31 @@ -function newSku(e: GoogleAppsScript.Events.SheetsOnEdit) { +function newSkuHandler(e: GoogleAppsScript.Events.SheetsOnEdit) { var sheet = SpreadsheetApp.getActive().getActiveSheet() if (sheet.getName() !== "product_inventory") { console.log("skipping edit on sheet " + sheet.getName()) return } - let row = e.range.getRow() + let row = e.range.getRowIndex() let idCell = getCellRangeByColumnName(sheet, "#", row) let idCellValue = idCell.getValue() - let skuPrefixCellValue = getCellValueByColumnName(sheet, "sku_prefix", row) - console.log("skuPrefixCellValue = '" + skuPrefixCellValue + "'") console.log("idCellValue = '" + idCellValue + "'") if (idCellValue != "?" && idCellValue != "n") { console.log("new ID was not requested, returning") return } + newSku(row) +} + +function newSku(row: number) { + let sheet = SpreadsheetApp.getActive().getSheetByName("product_inventory") + let idCell = getCellRangeByColumnName(sheet, "#", row) + let safeToOverwrite: string[] = ["?", "n", ""] + let idCellValue = idCell.getValue() + let skuPrefixCellValue = getCellValueByColumnName(sheet, "sku_prefix", row) + console.log("skuPrefixCellValue = '" + skuPrefixCellValue + "'") + if (!safeToOverwrite.includes(idCellValue)) { + console.log("ID '" + idCellValue + "' is not safe to overwrite, returning") + return + } var idArray = sheet.getRange(2, 9, sheet.getLastRow(), 1).getValues() var regExp = new RegExp(`^` + skuPrefixCellValue + `-0*(\\d+)$`) console.log("regExp: " + regExp.toString()) diff --git a/src/onEdit.ts b/src/onEdit.ts index c34b0d0..c96b36d 100644 --- a/src/onEdit.ts +++ b/src/onEdit.ts @@ -1,5 +1,5 @@ /// function onEdit(e: GoogleAppsScript.Events.SheetsOnEdit) { - newSku(e) + newSkuHandler(e) } diff --git a/src/productTemplate.ts b/src/productTemplate.ts index d27f319..f9dd146 100644 --- a/src/productTemplate.ts +++ b/src/productTemplate.ts @@ -14,6 +14,7 @@ function productTemplate(row: number) { SpreadsheetApp.getActiveSpreadsheet().getSheetByName("product_inventory") let titleValue = getCellValueByColumnName(productInventorySheet, "title", row) for (let i = 0; i < updateColumns.length; i++) { + let updateColumn = updateColumns[i] let currentValue = getCellValueByColumnName( productInventorySheet, updateColumns[i], @@ -21,24 +22,30 @@ function productTemplate(row: number) { ) if (currentValue != "") { console.log( - "current value for '" + updateColumns[i] + "' is '" + currentValue + "'" + "current value for '" + updateColumn + "' is '" + currentValue + "'" ) continue } - let templateValue = vlookupByColumns( + var templateValue: string = "" + templateValue = vlookupByColumns( "product_types", "title", titleValue, - updateColumns[i] + updateColumn ) if (templateValue != "") { console.log( "template value for '" + - updateColumns[i] + + updateColumn + "' is '" + templateValue + "'" ) + toastAndLog("updating '" + updateColumn + "' to '" + templateValue + "'") + let cell = getCellRangeByColumnName(productInventorySheet, updateColumn, row) + cell.setValue(templateValue) } } + console.log("updating sku...") + newSku(row) } diff --git a/src/sheetUtils.ts b/src/sheetUtils.ts index 6ccd7cd..58ee983 100644 --- a/src/sheetUtils.ts +++ b/src/sheetUtils.ts @@ -58,7 +58,7 @@ function vlookupByColumns( return } let resultValue = getCellValueByColumnName(s, resultColumn, index + 2) - toastAndLog(resultValue) + console.log("resultValue: " + resultValue) return resultValue }