import * as z from "zod" import { defineAction } from "../../../automation/actions" import { getGoogleSheetsApi, normalizeSpreadsheet, normalizeSpreadsheetId, } from "../lib/google-sheets" import { GOOGLE_SHEETS_READ_REQUIREMENT } from "../lib/scopes" import { SPREADSHEET_REFERENCE_SCHEMA, SPREADSHEET_SCHEMA, } from "../lib/schemas" /** Retrieves spreadsheet properties, sheets, named ranges, and native tables. */ export const getGoogleSpreadsheet = defineAction("Get Google spreadsheet") .describe("Gets normalized spreadsheet and sheet metadata.") .account("google", GOOGLE_SHEETS_READ_REQUIREMENT) .input( z.object({ /** Spreadsheet ID or standard Google Sheets URL. */ spreadsheet: SPREADSHEET_REFERENCE_SCHEMA, }), ) .output(SPREADSHEET_SCHEMA) .retry({ replaySafety: "safe" }) .handler(async ({ account, input }) => { const { data } = await getGoogleSheetsApi(account.secret).spreadsheets.get({ includeGridData: false, spreadsheetId: normalizeSpreadsheetId(input.spreadsheet), }) return normalizeSpreadsheet(data) })