make newSku resiliant to column moves
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
import {
|
||||
getColumnByName,
|
||||
getCellRangeByColumnName,
|
||||
getCellValueByColumnName,
|
||||
getColumnValuesByName,
|
||||
} from "./sheetUtils"
|
||||
|
||||
|
||||
@ -23,6 +25,10 @@ export function newSkuHandler(e: GoogleAppsScript.Events.SheetsOnEdit) {
|
||||
|
||||
export function newSku(row: number) {
|
||||
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 safeToOverwrite: string[] = ["?", "n", ""]
|
||||
let idCellValue = idCell.getValue()
|
||||
@ -32,20 +38,20 @@ export function newSku(row: number) {
|
||||
console.log("ID '" + idCellValue + "' is not safe to overwrite, returning")
|
||||
return
|
||||
}
|
||||
var idArray = sheet.getRange(2, 9, sheet.getLastRow(), 1).getValues()
|
||||
var skuArray = getColumnValuesByName(sheet, "sku")
|
||||
var regExp = new RegExp(`^` + skuPrefixCellValue + `-0*(\\d+)$`)
|
||||
console.log("regExp: " + regExp.toString())
|
||||
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))
|
||||
if (null == idArray[i] || String(idArray[i]) == "") {
|
||||
console.log("ID cell looks null")
|
||||
if (null == skuArray[i] || String(skuArray[i]) == "") {
|
||||
console.log("SKU cell looks null")
|
||||
continue
|
||||
}
|
||||
console.log("ID cell: '" + idArray[i] + "'")
|
||||
var match = regExp.exec(String(idArray[i]))
|
||||
console.log("SKU cell: '" + skuArray[i] + "'")
|
||||
var match = regExp.exec(String(skuArray[i]))
|
||||
if (null === match) {
|
||||
console.log("ID cell did not match")
|
||||
console.log("SKU cell did not match")
|
||||
continue
|
||||
}
|
||||
let numId = Number(match[1])
|
||||
|
||||
@ -24,12 +24,20 @@ export function getCellValueByColumnName(
|
||||
export function getColumnRangeByName(
|
||||
sheet: GoogleAppsScript.Spreadsheet.Sheet,
|
||||
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 column = data[0].indexOf(columnName)
|
||||
if (column != -1) {
|
||||
return sheet.getRange(2, column + 1, sheet.getMaxRows())
|
||||
}
|
||||
return column + 1
|
||||
}
|
||||
|
||||
export function getColumnValuesByName(
|
||||
|
||||
Reference in New Issue
Block a user