- Implemented modular status automation system (statusHandlers.ts). - Added handlers for 'Published' (Active/Qty 1), 'Sold' (Active/Qty 0), and 'Drafted'. - Refactored onEdit triggers into a central Router pattern in OnEditHandler.ts. - Updated Product.ts to support explicit quantity setting (fixed 0 value bug). - Updated shopifyApi.ts to implement SetInventoryItemQuantity (using ignoreCompareQuantity). - Consolidated triggers into single onEditHandler. - Updated project documentation.
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
export function reinstallTriggers() {
|
|
let currentTriggers = ScriptApp.getProjectTriggers()
|
|
for (let i = 0; i < currentTriggers.length; i++) {
|
|
ScriptApp.deleteTrigger(currentTriggers[i])
|
|
}
|
|
|
|
let ss = SpreadsheetApp.getActive()
|
|
ScriptApp.newTrigger("onEditHandler").forSpreadsheet(ss).onEdit().create()
|
|
ScriptApp.newTrigger("processBatchedEdits")
|
|
.timeBased()
|
|
.everyMinutes(1)
|
|
.create()
|
|
|
|
installSalesSyncTrigger()
|
|
}
|
|
|
|
import { Config } from "./config"
|
|
|
|
export function installSalesSyncTrigger() {
|
|
const config = new Config()
|
|
// Valid minute intervals for Apps Script
|
|
const valid = [1, 5, 10, 15, 30]
|
|
let freq = config.salesSyncFrequency || 10
|
|
|
|
if (valid.indexOf(freq) === -1) {
|
|
console.warn(`Invalid frequency ${freq}. Must be 1, 5, 10, 15, 30. Defaulting to 10.`)
|
|
freq = 10
|
|
}
|
|
|
|
// Delete existing 'checkRecentSales' triggers to avoid duplicates
|
|
const triggers = ScriptApp.getProjectTriggers()
|
|
for (const t of triggers) {
|
|
if (t.getHandlerFunction() === "checkRecentSales") {
|
|
ScriptApp.deleteTrigger(t)
|
|
}
|
|
}
|
|
|
|
ScriptApp.newTrigger("checkRecentSales")
|
|
.timeBased()
|
|
.everyMinutes(freq)
|
|
.create()
|
|
|
|
console.log(`Installed 'checkRecentSales' trigger running every ${freq} minutes.`)
|
|
}
|