Descrizione
Connettore enterprise per Google Sheets — il SaaS spreadsheet di Google con 900M+ MAU integrato in Workspace, alternativa cloud-native a Excel desktop ampiamente usato in startup, agency, team B2B che preferiscono la collaboration real-time + sharing semplificato a un DB enterprise — via Sheets API v4 ufficiale OAuth2. Quattro operazioni atomiche coprono il ciclo read/write completo: getValues (legge un range A1 notation tipo "Foglio1!A1:D100" oppure "Vendite!A:E" range aperto fino in fondo, ritorna array 2D di valori), updateValues (sovrascrive idempotent un range specifico — pattern safe per sync dove vogliamo controllo esatto della destinazione), appendValues (insert in fondo allo sheet auto-detecting la prima riga libera — pattern naturale per logging incrementale di eventi), batchGet (multi-range in singola request per ridurre roundtrip su sheet con multipli area da leggere contemporaneamente). Auth via OAuth2 portal-centric pattern di FlowForge: l'utente fa OAuth consent flow una sola volta da Settings → Integrations → Google Sheets, e il portal centrale (NON il container tenant) gestisce il refresh token + emette access token short-lived (3600s default Google OAuth) al runtime via JWE handoff 5min — questo pattern enterprise (vedi memory project_oauth_multi_tenant_portal_centric) evita di richiedere consent ad ogni run e centralizza il vault credenziali. Auto-refresh dell'access_token su 401 con 1 retry trasparente — l'utente non vede mai expire né deve fare manual re-auth. Schema cell types: il nodo preserva i tipi nativi Google Sheets — numeri restano numeric (non stringificati), date in formato Excel serial number convertite a Date object JavaScript, formule (es. "=SUM(A1:A10)") preservate come formule durante updateValues (la cella resta formula, non valore calcolato), formatting (currency €, percent, date format) preservato server-side da Google. Rate limit Google Sheets API v4: 100 req/100sec per project/user (quota generosa per uso interattivo, condivisa col resto delle Google APIs dello stesso project), 60 RPM per user — il nodo gestisce 429 con Retry-After header + backoff exponential automatico. Output: { rows (array 2D di [row][col] string|number|null), range (A1 notation finale), updatedCells? (count per operazioni write), spreadsheetId, sheetTitle, sheetGid?, lastModifiedTime }. Use case: ingest CSV → Google Sheet per analisi business dal team marketing (CSV upload via trigger_file_watch → parse → batchUpdate del Sheet target "Marketing_Leads_Master"); sync KPI dashboard real-time dove i numeri vengono calcolati da workflow trigger_cron + aggregate + updateValues su sheet visualized in Looker Studio; logging eventi workflow su sheet condiviso col team (audit trail soft-light, non-DB grade ma sufficiente per use case operativi); ETL semplice senza data warehouse pesante (sync da N source come Stripe/HubSpot/Calendly → un Google Sheet "tutto in uno" che il CFO consulta via Web); backup leggero di record DB critici per audit consumabile da stakeholder non-tech che hanno solo Google account ma non accesso al DB diretto.
