make newSku resiliant to column moves
This commit is contained in:
@ -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])
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user