- 1 library project (TaskSyncLib)
- 18 spreadsheets with wrapper code (1 master + 17 crews)
- ~40 minutes total
Library ID (already deployed):
AKfycbzsIBfQQGAlwrppWDiRzc3kjn1qKKWkR8UNEbD95zSkoUVgV04Lu2FkdfrnarwJGTBi
This ID is embedded in TaskSyncWrapper.gs - just copy-paste the wrapper code.
- Open the master spreadsheet
- Extensions → Apps Script
- Delete ALL existing code
- Paste contents of
TaskSyncWrapper.gs - Also paste contents of
SetupHelper.gs(for helper functions) - In left sidebar, click + next to Libraries
- Paste your Deployment ID → Look up → Select version → Add
- In toolbar dropdown, select setupTrigger → click ▶ Run
- Click through authorization prompts
Test it: Run testSync - should say "Library is connected!"
From master's Apps Script, run listAllSpreadsheetUrls to get your checklist.
For each crew spreadsheet:
[ ] 1. Open spreadsheet
[ ] 2. Extensions → Apps Script
[ ] 3. Delete all existing code
[ ] 4. Paste TaskSyncWrapper.gs
[ ] 5. Libraries (+) → Paste ID → Look up → Add
[ ] 6. Select setupTrigger → Run
[ ] 7. Authorize
Pro tip: Open 3-4 spreadsheets in tabs, set them up in parallel while waiting for authorization prompts.
From master's Apps Script, run verifySetup to check all connections.
| File | Where it goes |
|---|---|
TaskSyncLib.gs |
Standalone project (deployed as library) |
TaskSyncWrapper.gs |
Every spreadsheet (master + 17 crews) |
SetupHelper.gs |
Master only (optional helper functions) |
"TaskSyncLib is not defined" → Library not added. Click + next to Libraries, paste ID.
"You do not have permission"
→ Run setupTrigger again and complete authorization.
"Cannot read property of undefined"
→ Check that library identifier is exactly TaskSyncLib (case-sensitive).
Changes not syncing
→ Run listTriggers to verify onEditTrigger exists.
→ Check Executions log for errors.
- Bootstrap: Run from master menu: Task Sync → Bootstrap
- Validate: Task Sync → Validate setup
- Force sync: Task Sync → Reconcile
The system will now automatically sync edits bidirectionally!