actions/create-spreadsheet/create-spreadsheet.mjs
import googleSheets from "../../google_sheets.app.mjs"; export default { key: "google_sheets-create-spreadsheet", name: "Create Spreadsheet", description: "Create a blank spreadsheet or duplicate an existing spreadsheet. [See the documentation](https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/create)", version: "0.1.15", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { googleSheets, drive: { propDefinition: [ googleSheets, "watchedDrive", ], description: "The drive to create the new spreadsheet in. If you are connected with any [Google Shared Drives](https://support.google.com/a/users/answer/9310351), you can select it here.", }, title: { type: "string", label: "Title", description: "The title of the new spreadsheet", }, folderId: { propDefinition: [ googleSheets, "folderId", (c) => ({ drive: c.drive, }), ], description: "The folder you want to save the file to", optional: true, }, sheetId: { propDefinition: [ googleSheets, "sheetID", (c) => ({ driveId: googleSheets.methods.getDriveId(c.drive), }), ], description: "The Google spreadsheet to copy", optional: true, }, }, async run({ $ }) { const { googleSheets, sheetId, folderId, title, drive, } = this; const { copySpreadsheet, createSpreadsheet, getSpreadsheet, updateFile, isMyDrive, } = googleSheets; let response; if (sheetId) { response = await copySpreadsheet(sheetId, title); } else { response = await createSpreadsheet({ resource: { properties: { title, }, }, }); } const spreadsheetId = response?.spreadsheetId || response?.id; const summary = `Successfully created spreadsheet with ID: ${spreadsheetId}`; if (!folderId && isMyDrive(drive)) { $.export("$summary", summary); return response; } const spreadsheet = await updateFile(spreadsheetId, { addParents: folderId || drive, }); $.export("$summary", summary); return getSpreadsheet(spreadsheet.id); }, };