diff --git a/packages/nodes-base/nodes/Google/GoogleSheet.ts b/packages/nodes-base/nodes/Google/GoogleSheet.ts index 58392be54f..72391939af 100644 --- a/packages/nodes-base/nodes/Google/GoogleSheet.ts +++ b/packages/nodes-base/nodes/Google/GoogleSheet.ts @@ -45,6 +45,27 @@ export class GoogleSheet { } + /** + * Clears values from a sheet + * + * @param {string} range + * @returns {Promise} + * @memberof GoogleSheet + */ + async clearData(range: string): Promise { + const client = await this.getAuthenticationClient(); + + const response = await Sheets.spreadsheets.values.clear( + { + auth: client, + spreadsheetId: this.id, + range, + } + ); + + return response.data; + } + /** * Returns the cell values */ diff --git a/packages/nodes-base/nodes/Google/GoogleSheets.node.ts b/packages/nodes-base/nodes/Google/GoogleSheets.node.ts index da7d070214..028011a3ff 100644 --- a/packages/nodes-base/nodes/Google/GoogleSheets.node.ts +++ b/packages/nodes-base/nodes/Google/GoogleSheets.node.ts @@ -47,6 +47,11 @@ export class GoogleSheets implements INodeType { value: 'append', description: 'Appends the data to a Sheet', }, + { + name: 'Clear', + value: 'clear', + description: 'Clears data from a Sheet', + }, { name: 'Lookup', value: 'lookup', @@ -172,6 +177,7 @@ export class GoogleSheets implements INodeType { hide: { operation: [ 'append', + 'clear', ], rawData: [ true @@ -193,6 +199,9 @@ export class GoogleSheets implements INodeType { }, displayOptions: { hide: { + operation: [ + 'clear', + ], rawData: [ true ], @@ -266,6 +275,16 @@ export class GoogleSheets implements INodeType { type: 'collection', placeholder: 'Add Option', default: {}, + displayOptions: { + show: { + operation: [ + 'append', + 'lookup', + 'read', + 'update', + ], + }, + }, options: [ { displayName: 'Return All Matches', @@ -425,6 +444,15 @@ export class GoogleSheets implements INodeType { // TODO: Should add this data somewhere // TODO: Should have something like add metadata which does not get passed through + return this.prepareOutputData(items); + } else if (operation === 'clear') { + // ---------------------------------- + // clear + // ---------------------------------- + + await sheet.clearData(range); + + const items = this.getInputData(); return this.prepareOutputData(items); } else if (operation === 'lookup') { // ----------------------------------