09995d0d05cf44fd2cd646899f656ea41354376c
- **Batch Linking UI**: Added 'queueing' mechanism for links, allowing multiple manual links to be defined before saving. - **Critical Save Fix**: Intercept saveChanges to strictly enforce the 'Confirmation Wizard' for pending links, ensuring items are merged in memory before backend processing to prevent duplication. - **Adoption Persistence**: Updated MediaService to explicitly write shopify_media_id to Drive file properties during save, fixing race conditions where linked items were re-adopted as orphans. - **Plan Accuracy**: Updated calculateDiff to exclude pending link items from generating duplicate 'Sync' or 'Adopt' actions. - **Order Preservation**: Implemented logic to ensure the 'Synced' item creates/persists at the position of the *first* item in the linked pair. - **Testing**: Added src/MediaStateLogic.test.ts as a permanent test suite for complex frontend state logic, covering queuing, plan generation, and invariant safety.
Product Inventory Management
This project integrates Google Sheets with Shopify to manage product inventory, photos, and metadata. It uses Google Apps Script to synchronize data between a "master" Google Sheet and your Shopify store.
Overview
The system allows you to:
- Manage product details (SKUs, titles, descriptions) in a Google Sheet.
- Automatically upload product photos from Google Drive to Shopify.
- specific triggers (
onEdit,onOpen) to sync changes to Shopify in real-time or on-demand. - Handle rate limiting and concurrency using a custom queue system.
- Handle rate limiting and concurrency using a custom queue system.
- Monitor and troubleshoot background processes via a custom side panel.
- Automated Sales Sync: Periodically check Shopify for recent sales and mark items as "sold" in the sheet.
- Manual Reconciliation: Backfill sales data for a specific time range via menu command.
- Status Workflow Automation: Automatically update Shopify status and inventory based on the sheet's "status" column (e.g., "Sold" -> Active, 0 Qty).
- Integrated Media Manager: A dedicated sidebar for managing product photos, including Google Drive integration and live Shopify syncing.
Prerequisites
- Node.js: managed via
fnm(Fast Node Manager) - Google Clasp: for pushing code to Apps Script
- Google Cloud Project: tied to the Apps Script container
Quick Start
-
Install Dependencies
npm install -
Build Project
npm run build -
Deploy to Apps Script
npm run deploy
Testing
Run unit tests using Jest:
npm test
```bash
npm test
Code Quality Enforcement
This project uses Husky to enforce code quality locally.
- Pre-commit Hook: Runs tests on changed files before every commit.
- Coverage Requirement: Modified files must maintain 80% code coverage. Commits will be blocked if this threshold is not met.
Project Structure
src/: Source code (TypeScript)src/config.ts: Configuration loading from Sheetssrc/global.ts: Entry points for Apps Scriptsrc/shopifyApi.ts: Shopify Admin API wrappersrc/onEditQueue.ts: Concurrency management
For more details, see:
Description
Languages
TypeScript
70.8%
HTML
28.8%
JavaScript
0.3%
PowerShell
0.1%