import * as z from "zod" import { defineAction } from "../../../automation/actions" import { getGoogleSheetsApi, normalizeSheet, normalizeSpreadsheetId, resolveSheet, } from "../lib/google-sheets" import { GOOGLE_SHEETS_WRITE_REQUIREMENT } from "../lib/scopes" import { SHEET_REFERENCE_SCHEMA, SHEET_SCHEMA, SPREADSHEET_REFERENCE_SCHEMA, } from "../lib/schemas" /** Deletes a sheet and returns the metadata that identified it. */ export const deleteGoogleSheet = defineAction("Delete Google sheet") .describe("Permanently deletes one sheet from a Google spreadsheet.") .account("google", GOOGLE_SHEETS_WRITE_REQUIREMENT) .input( z.object({ /** Sheet title or immutable numeric sheet ID. */ sheet: SHEET_REFERENCE_SCHEMA, /** Spreadsheet ID or standard Google Sheets URL. */ spreadsheet: SPREADSHEET_REFERENCE_SCHEMA, }), ) .output(SHEET_SCHEMA) .retry({ replaySafety: "unsafe" }) .handler(async ({ account, input }) => { const spreadsheetId = normalizeSpreadsheetId(input.spreadsheet) const sheetsApi = getGoogleSheetsApi(account.secret) const sheet = await resolveSheet(sheetsApi, spreadsheetId, input.sheet) await sheetsApi.spreadsheets.batchUpdate({ requestBody: { requests: [{ deleteSheet: { sheetId: sheet.properties!.sheetId! } }], }, spreadsheetId, }) return normalizeSheet(sheet) })