This page is for whoever packages the desktop build, not for end users. If
you are using the app and see “Live Google Sheet sync isn’t switched on for
this deployment yet”, that means this setup has not been done for your build —
CSV import works regardless, and a synced sheet can be imported as a file.
Why a setup step exists
The desktop app connects a Google Sheet through Google’s own OAuth, using the installed-app pattern: the user approves in their real browser, and Fin gets read access to exactly the one sheet they pick (drive.file scope) — never
their whole Drive, never their Google password.
That flow needs a Google OAuth client of type “Desktop app”, registered
once. The client id ships in the binary (which is sanctioned for installed
apps — PKCE is what protects the exchange, not a secret). Until a build carries
one, the app honestly says the feature is not switched on rather than offering a
button that fails.
One-time registration
1
Create a Desktop app OAuth client
In the Google Cloud Console → APIs & Services → Credentials → Create
credentials → OAuth client ID, choose application type Desktop app.
Desktop clients permit loopback redirects on any port, which is what makes
the OS-assigned local port work.
2
Enable the APIs
Enable the Google Sheets API and the Google Drive API for the
project. The Drive API backs the
drive.file scope; Sheets reads the rows.3
Configure the consent screen for drive.file
drive.file is a non-sensitive scope (per-file access the user grants
explicitly), so it does not require Google’s restricted-scope security
assessment. Fill in the consent screen and publish it. Add test users while
it is in testing.4
Set the build's environment
The packaged desktop build reads these:
No redirect URI needs pre-registering: desktop clients allow loopback, and
the app computes
http://127.0.0.1:<port>/api/feeds/google/desktop/callback
from the running server.What the user then sees
With the client id present, the connector card offers Connect a Google Sheet: the user pastes their sheet’s link, a browser tab opens for approval, and the app completes the connection and proposes a column mapping — the same “check the columns” step the web app uses.How sync behaves once connected
Fin reads the sheet on a schedule; rows are fingerprinted so re-reading the same
sheet changes nothing, and a row that disappears is flagged rather than deleted.
