make newSku resiliant to column moves

This commit is contained in:
Ben Miller
2024-11-17 14:20:27 -07:00
parent fa700b622e
commit f43c758fdb
2 changed files with 24 additions and 10 deletions

View File

@ -1,6 +1,8 @@
import { import {
getColumnByName,
getCellRangeByColumnName, getCellRangeByColumnName,
getCellValueByColumnName, getCellValueByColumnName,
getColumnValuesByName,
} from "./sheetUtils" } from "./sheetUtils"
@ -23,6 +25,10 @@ export function newSkuHandler(e: GoogleAppsScript.Events.SheetsOnEdit) {
export function newSku(row: number) { export function newSku(row: number) {
let sheet = SpreadsheetApp.getActive().getSheetByName("product_inventory") let sheet = SpreadsheetApp.getActive().getSheetByName("product_inventory")
let skuPrefixCol = getColumnByName(sheet, "sku_prefix")
console.log("skuPrefixCol: " + skuPrefixCol)
let idCol = getColumnByName(sheet, "#")
console.log("idCol: " + idCol)
let idCell = getCellRangeByColumnName(sheet, "#", row) let idCell = getCellRangeByColumnName(sheet, "#", row)
let safeToOverwrite: string[] = ["?", "n", ""] let safeToOverwrite: string[] = ["?", "n", ""]
let idCellValue = idCell.getValue() let idCellValue = idCell.getValue()
@ -32,20 +38,20 @@ export function newSku(row: number) {
console.log("ID '" + idCellValue + "' is not safe to overwrite, returning") console.log("ID '" + idCellValue + "' is not safe to overwrite, returning")
return return
} }
var idArray = sheet.getRange(2, 9, sheet.getLastRow(), 1).getValues() var skuArray = getColumnValuesByName(sheet, "sku")
var regExp = new RegExp(`^` + skuPrefixCellValue + `-0*(\\d+)$`) var regExp = new RegExp(`^` + skuPrefixCellValue + `-0*(\\d+)$`)
console.log("regExp: " + regExp.toString()) console.log("regExp: " + regExp.toString())
var maxId = 0 var maxId = 0
for (let i = 0; i < idArray.length; i++) { for (let i = 0; i < skuArray.length; i++) {
console.log("checking row " + (i + 1)) console.log("checking row " + (i + 1))
if (null == idArray[i] || String(idArray[i]) == "") { if (null == skuArray[i] || String(skuArray[i]) == "") {
console.log("ID cell looks null") console.log("SKU cell looks null")
continue continue
} }
console.log("ID cell: '" + idArray[i] + "'") console.log("SKU cell: '" + skuArray[i] + "'")
var match = regExp.exec(String(idArray[i])) var match = regExp.exec(String(skuArray[i]))
if (null === match) { if (null === match) {
console.log("ID cell did not match") console.log("SKU cell did not match")
continue continue
} }
let numId = Number(match[1]) let numId = Number(match[1])

View File

@ -24,12 +24,20 @@ export function getCellValueByColumnName(
export function getColumnRangeByName( export function getColumnRangeByName(
sheet: GoogleAppsScript.Spreadsheet.Sheet, sheet: GoogleAppsScript.Spreadsheet.Sheet,
columnName: string columnName: string
) {
let column = getColumnByName(sheet, columnName)
if (column != -1) {
return sheet.getRange(2, column, sheet.getMaxRows())
}
}
export function getColumnByName(
sheet: GoogleAppsScript.Spreadsheet.Sheet,
columnName: string
) { ) {
let data = sheet.getRange("A1:1").getValues() let data = sheet.getRange("A1:1").getValues()
let column = data[0].indexOf(columnName) let column = data[0].indexOf(columnName)
if (column != -1) { return column + 1
return sheet.getRange(2, column + 1, sheet.getMaxRows())
}
} }
export function getColumnValuesByName( export function getColumnValuesByName(