Download this guide as a PDF

My Switch Collection — User Guide

Welcome. This is the complete guide to going from nothing to a fully set up collection: your own Google Sheet, the one-time setup, day-to-day use, and the optional companion web app. It replaces the earlier beta onboarding notes and covers the whole journey, not just week one.

Your data is yours. Your sheet lives in your own Google Drive, under your own Google account. Nobody else, including us, reads or writes it unless you explicitly share it. You can un-share it, download it, or delete it at any time — nothing about this product locks you in.

1. What you get

Two things, and you only ever need the first one:

  • A Google Sheet you own outright. This is the real product: a normalized spreadsheet (separate tabs for your catalog, your physical copies, your wishlist, and a couple of read-only summary views) with a small script attached to it. It costs nothing, needs no install, and keeps working as a plain Google Sheet — filters, pivot tables, exports — whether or not you ever touch anything else described in this guide.
  • An optional web app. A phone-friendly companion that talks to the same sheet — nothing is duplicated. It adds a faster mobile "add a game" flow, a dashboard, photo-based stock takes, and price tracking. It's opt-in, and it may not be switched on for your collection yet — see section 8.

2. Create your sheet

Ask whoever manages this collection's account for the current template link, or use the one below if it has already been filled in:

<TEMPLATE_URL>

Open it, then File → Make a copy, and save the copy into your own Drive — name it however you like (e.g. "My Game Shelf"). From this moment on, this copy — the data, the sheet structure, and the script bound to it — is entirely yours. Nothing you do in it is visible to anyone else, ever, unless you choose to share it.

[Screenshot: the Google Sheets "File → Make a copy" menu]

3. First setup

Open the menu 🎮 Collection → Setup. This does three things: authorizes the script to run on your copy, checks that the sheet's hidden configuration is intact, and schedules the daily versions sync described in section 4. You only need to do this once, right after copying.

The permission screen, honestly

The first time you run any menu item, Google will ask you to authorize the script. Because each collector's copy is technically its own small application, and there are simply too many copies for Google to individually review and "verify" one by one, you will see a warning that says "Google hasn't verified this app." This is expected — it is not a sign that anything is wrong or unsafe. Here's exactly what to do:

  1. You'll see a screen titled "Google hasn't verified this app," with a button labelled Advanced. Click it.
  2. A new line appears: "Go to [project name] (unsafe)." Click it. ("Unsafe" here just means Google hasn't put this specific script through its formal verification review — not that it does anything harmful.)
  3. You'll now see the real permission list — four items. Review them, then click Allow / Continue.

[Screenshot: the "Google hasn't verified this app" warning with Advanced expanded]

Here is exactly what those four permissions are, and what each one actually does — this is the complete list, nothing else is ever requested:

What Google shows (roughly)What it actually means
See, edit, create and delete a specific Google SheetThis spreadsheet only. Not your Drive, not your other sheets, not your email — just this one file.
Connect to an external serviceOne outgoing fetch per day, to a shared, public versions data sheet (cart codes/revisions). Nothing else is ever called.
Display and run third-party web content in prompts and sidebarsThe "Add game…" search popup. Needed for the dialog window itself to render.
Allow this application to run when you are not presentIts own daily timer, so the versions data refreshes automatically without you doing anything.

Notice what's not on that list: there is no general Google Drive permission at all. The script cannot see your other files, cannot create files in your Drive, and cannot read any other spreadsheet you own. This is deliberately the narrowest set of permissions that makes the sheet work.

4. What the daily sync does

Once Setup runs, your VERSIONS tab fills in automatically — a read-only mirror of cart codes, revisions, and regions for thousands of known Switch releases, refreshed once a day (around 05:00, your copy's configured time zone). A full sync takes about a minute. Cell A1 of VERSIONS always shows when it last ran and how many rows it pulled.

You don't need to do anything for this to work — it runs in the cloud even if your laptop is off. If you ever want a fresh copy right now, use 🎮 Collection → Sync versions now.

If a day's sync ever fails, don't worry — it just tries again on the same schedule the next day, and your existing VERSIONS data stays exactly as it was in the meantime. See the FAQ (section 9) if it stays stale for more than a couple of days.

5. Adding games

There are two ways to add a game to your collection: from the sheet itself, or from the web app if you have one set up.

From the sheet (desktop/browser)

🎮 Collection → Add game… opens a search dialog:

  1. Type a game name or a cart code (e.g. "Hollow Knight" or LA-H-B). Results from the VERSIONS mirror appear as you type.
  2. Pick the exact release/revision/region you own from the list.
  3. Fill in two quick fields before anything is written: Sealed? (a dropdown — OPEN by default, or a seal type if it's still factory sealed) and Price paid (optional).
  4. Click Add. A row is written to COPIES — name, console, region, cart code, revision, seal, price all pre-filled — and a CATALOG row is created automatically if the game is new to your collection.

[Screenshot: the Add game search dialog with results and the quick fields]

Newly added copies default to STATUS = KEEP — a deliberate add is presumed wanted. If it turns out to be a duplicate of something you already own, it'll show up in SURPLUS for you to triage later (section 7). Everything else — condition, location, final status — is left for you to fill in via the dropdowns in COPIES afterwards.

From the web app (mobile, in-store)

If you have the web app set up (section 8), its Add game page is a faster, phone-friendly version of the same flow, built specifically for "I'm standing in a store right now":

  1. Search by name or cart code.
  2. Tap the exact release you're holding.
  3. Set Sealed?, an optional Location (e.g. "Shelf A, box 2"), Buying as (Keep, or Invest for a deliberate speculative buy — see section 7), and an optional Price paid.
  4. Tap Add to collection.

[Screenshot: the web app's Add game quick-add form]

This writes to the exact same COPIES tab as the in-sheet dialog — there's no separate mobile database to keep in sync.

6. Import and restore between copies

🎮 Collection → Import data… pulls CATALOG/COPIES/PIPELINE (and your personal BATTERY/NOTES tabs, if present) from another copy of this sheet, given its spreadsheet ID. This is the tool for:

  • Restoring your own data into a fresh copy, if something goes wrong.
  • Migrating between two of your own copies.
  • Upgrading to a newer version of the template without losing your data — copy the new template, then Import from your old copy's URL. Import tolerates older layouts (missing columns, different column order) by matching columns by name, so this works even if your old copy predates newer columns.

To use it, the source sheet needs to be temporarily shared as "Anyone with the link: Viewer." The dialog asks for its spreadsheet ID, fetches and validates every tab, and — if the destination already has data — asks you to confirm before overwriting.

[Screenshot: the Import data dialog's confirmation step]

Privacy note. While the source sheet is link-shared, anyone with that link can read it — including your buy prices and notes. Once the import finishes, go back to the source sheet and restrict its sharing again (Share → Restricted). It's worth saying twice: don't leave a copy of your collection sitting publicly link-readable any longer than it takes to import from it.

7. Understanding your tabs

TabWhat it isWho edits it
CATALOGOne row per game — genre, scores, play status, cover art. Shared across all your copies of that game.You (mostly auto-created when you add a copy)
COPIESOne row per physical copy you own — console, region, condition, status, buy/sell price. This is where almost everything happens.You
PIPELINEYour wishlist/watch list — games you're tracking to buy, with a store, a price, and a target alert price.You
DASHBOARDAuto-generated summary: totals, counts, realized profit.Nobody — read-only
SURPLUSAuto-generated list of games where you own more than one active copy.Nobody — read-only

DASHBOARD and SURPLUS both carry an in-sheet note explaining they're generated. If a number on either one looks wrong, the fix is always in COPIES or CATALOG — never on those two tabs directly, since edits there don't stick (they're formulas).

SURPLUS is your "what do I do with duplicates" list: any game where you own more than one non-sold copy. Filter for STATUS = UNDECIDED and decide, per copy, KEEP or SELL — directly in COPIES. The list updates itself the instant you change a status.

Seal types (the SEALED column)

ValueMeaning
OPENNot sealed — this is the default for a normal used/played copy.
NINTENDOStill factory-sealed with Nintendo's original wrap.
BLANKSealed with a plain, unbranded wrap.
RACCOLTA-1 / RACCOLTA-2Sealed with one of two known Italian-market re-wrap batches — collectors in that niche track these as distinct.
SEALED-UNKNOWNClearly still sealed, but the wrap type can't be identified.
RESEALEDSealed again after being opened — not factory-original.
OTHERSealed in some other identifiable way not covered above.

Picking anything other than OPEN also sets COMPLETENESS = SEALED automatically when you add through either Add game flow; OPEN sets it to CIB (complete in box).

Completeness (the COMPLETENESS column)

SEALED, CIB (complete in box — cart, case, and manual/inserts all present), CART-ONLY, CASE-ONLY, BOX-ONLY, MANUAL-ONLY, GRADED (professionally graded and slabbed). Set this by hand for anything that isn't a straightforward sealed-or-CIB copy.

Play status (the CATALOG tab's PLAY STATUS column)

A simple ladder: BACKLOG (not started) → PLAYINGBEATENCOMPLETED (fully done, not just credits) → DROPPED. This lives on the game, not the copy — it's about whether you've played it, independent of how many physical copies you own.

The reseller side (STATUS and INVEST)

The STATUS column on COPIES isn't just "keep or sell" — it also supports a deliberate flip/resale workflow: UNDECIDED, KEEP, SELL, SOLD, and INVEST (bought specifically to resell, tracked separately from your personal collection in the dashboard's "INVEST capital" and "INVEST copies" figures). Selling a copy fills in SELL PRICE, SELL DATE, and SELL CHANNEL, which is what feeds DASHBOARD's realized profit — see section 8 for the fastest way to record a sale.

8. The web app

The web app is optional and talks to the exact same sheet as everything above — it doesn't replace it. It may not be switched on for your collection yet; check with whoever manages it before expecting the sections below to be live for you.

Getting a token

The web app doesn't use a Google login. Instead, your administrator — or, once this is fully self-serve, the service itself — issues you a personal access token: a long, random string tied to your sheet and nothing else. You'll be sent that token directly (never over a shared/public channel, since it works like a password to your data). The first time you open the web app, paste it into the token screen; it's stored only in your own browser, and Sign out clears it. If you ever lose it or think it's been exposed, ask whoever issued it to reissue a fresh one — the old one stops working immediately.

[Screenshot: the web app's "paste your token" screen]

What each view does

ViewIts job
DashboardYour at-a-glance numbers — copies, games, invested, estimated value, realized profit, INVEST capital — plus breakdowns by status/completeness/play status, price alerts, and the "Refresh prices" button.
CollectionThe full, searchable/filterable/sortable table of every copy you own. Click a row to open its details, including cover art, and to edit location, condition, or status right there.
SurplusThe same duplicates list as the SURPLUS tab, grouped by game, with a status dropdown on each copy so you can decide KEEP/SELL/INVEST without leaving the page.
PipelineYour wishlist, filterable by stage (WATCH, HOLD, BUY, CONFIRMED, RESERVED, ORDERED).
Add gameThe mobile-first quick-add flow described in section 5.
PhotosBatch photo-based stock takes — see below.

Recording a sale

  1. In Collection, click the row for the copy you sold. Its details panel opens.
  2. Change Status to SOLD. A small form appears asking for sell price, sell date, and sell channel (EBAY, WALLAPOP, VINTED, LOCAL, OTHER).
  3. Fill it in and click Confirm sale.

[Screenshot: the sale mini-form inside a copy's details panel]

That single action writes STATUS, SELL PRICE, SELL DATE, and SELL CHANNEL back to your sheet, and your dashboard's realized profit updates on the next load.

Photo sessions, step by step

Rather than typing in every game one by one, you can photograph a shelf and let it identify what's in the picture:

  1. Open Photos.
  2. Drop one or more shelf photos onto the page, or tap it to choose files.
  3. Wait while each photo is identified — this reads the spines/covers in the image and does its best to match them.
  4. Review four groups: New (not in your collection yet), Uncertain (low confidence — check these carefully), Matched (already in your collection, nothing to do), and Unseen (copies you own that weren't spotted in these photos — nothing wrong, just a reminder).
  5. For an uncertain item, you can either check it to add it as new, or type into its "Link to an existing copy instead…" field to match it to something you already own — whichever is correct.
  6. Check the boxes for everything you want added, then click Add selected to collection.

[Screenshot: the photo session review screen with its four groups]

Nothing is written to your sheet until step 6 — the identification step itself never modifies anything.

Price refresh

The Dashboard's Refresh prices button checks a batch of your copies against current listings (Wallapop and Vinted always; eBay only if your administrator has configured it) and updates MARKET PRICE/PRICE UPDATED for whatever it finds a confident match for. It reports back how many were updated versus had no match, and re-loads the dashboard automatically.

Share your collection

The Dashboard's Share my collection card gives you a public, read-only showcase page of your collection at an unguessable link you can send to anyone — no sign-in needed on their side. What it shows is deliberately limited: game names, editions, regions, completeness, seal, condition score, play status and cover art. It never shows where you store anything, what you paid, your notes, or anything marked SOLD.

  • Create link makes your page; Copy puts the URL on your clipboard.
  • New link replaces the old URL (the old one stops working instantly) — use it if a link escaped further than you intended.
  • Revoke takes the page down entirely. You can create a fresh one later.

9. FAQ and troubleshooting

My daily sync didn't run — what do I do?

Check cell A1 of VERSIONS for the last-run timestamp. If it's more than a day or two stale, run 🎮 Collection → Sync versions now for an immediate refresh, and re-run Setup once to make sure the daily trigger is still scheduled — it can occasionally get cleared if you copy the sheet again or if Google revokes and re-asks for authorization.

Why can't I see the 🎮 Collection menu on my phone?

Custom menus and popup dialogs don't run in the Google Sheets mobile apps (Android/iOS) — that's a Google Sheets limitation, not something specific to this sheet. That means Add game… and the rest of the menu are desktop/web-browser only. On your phone, you have two options: open the COPIES tab directly and use the NAME column's dropdown (data validation does work on mobile) to add a bare-bones row you finish later, or — if you have it — use the web app's Add game page instead, which was built specifically for this case.

A game's cover art is missing or wrong

Cover art comes from a shared community art database, matched primarily by cart code and falling back to name matching when a code isn't available. Not every release and region has art yet — some regions (Spanish PAL box art especially) simply have much thinner coverage upstream than others, so you'll sometimes see an English-region cover standing in, or no cover at all. This is a data-completeness gap, not a sign anything is broken in your own sheet, and it fills in over time as the shared dataset grows.

My web app token stopped working

Tokens are scoped to exactly one sheet and can be reissued at any time — ask whoever gave you the original one for a fresh one. Re-issuing immediately invalidates the old token, so if you suspect yours leaked, reissuing is also how you shut off the old one.

DASHBOARD or SURPLUS show a number I don't recognize

Don't edit those tabs directly — they're generated from formulas and your edits won't stick. The source of truth is always COPIES (and CATALOG for game-level fields); fix it there and the generated tabs catch up immediately.

Do I have to use the web app?

No. The sheet is the complete product on its own — everything in sections 1 through 7 works with nothing installed and no token. The web app is a convenience layer for a faster mobile add-game flow, a dashboard, and photo-based stock takes; skip it entirely if you'd rather.

Is my data really private?

Yes, with one caveat worth repeating: the only moment your sheet is ever link-readable by someone else is if you temporarily share it — most commonly during Import data… (section 6). Restrict sharing again the moment the import finishes and nobody outside you ever had standing access.

Support and feedback

This product is under active development, and your feedback shapes what gets built next. Please report anything confusing, broken, or missing — especially around onboarding and the consent screen, which is the biggest hurdle for a non-technical collector. See the project's README for where to reach out if a support channel isn't already listed for you.

Thank you for trying this out.