Ben Miller 7c35817313 Refactor Media Manager sync logic and fix duplication bugs
This major refactor addresses improper image matching and duplication:

- Implemented strict ID-based matching in 'MediaService', removing the greedy filename matching fallback.

- Redesigned synchronization pipeline to treat Google Drive as the Source of Truth, supporting orphan adoption (Shopify -> Drive) and secure uploads.

- Implemented 'gallery_order' using Drive file properties (supporting both v2 and v3 APIs) for stable, drag-and-drop global ordering.

- Added conditional file renaming using timestamps to enforce '_' naming convention without unnecessary renames.

- Fixed runtime errors in 'MediaService' loops and updated 'ShopifyMediaService' GraphQL mutations to match correctly schema.

- Rewrote 'MediaService.test.ts' with robust test cases for strict matching, adoption, sorting, and reordering.
2025-12-28 12:25:13 -07:00
2024-11-07 21:49:40 -07:00
2024-11-13 23:43:32 -07:00

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

  1. Install Dependencies

    npm install
    
  2. Build Project

    npm run build
    
  3. 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 Sheets
  • src/global.ts: Entry points for Apps Script
  • src/shopifyApi.ts: Shopify Admin API wrapper
  • src/onEditQueue.ts: Concurrency management

For more details, see:

Description
No description provided
Readme 2.7 MiB
Languages
TypeScript 70.8%
HTML 28.8%
JavaScript 0.3%
PowerShell 0.1%