Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
activepieces:
image: ghcr.io/activepieces/activepieces:0.77.4
image: ghcr.io/activepieces/activepieces:0.77.5
container_name: activepieces
restart: unless-stopped
## Enable the following line if you already use AP_EXECUTION_MODE with SANDBOX_PROCESS or old activepieces, checking the breaking change documentation for more info.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "activepieces",
"version": "0.77.4",
"version": "0.77.5",
"rcVersion": "0.78.0-rc.0",
"scripts": {
"prepare": "husky install",
Expand Down
2 changes: 1 addition & 1 deletion packages/pieces/community/google-sheets/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@activepieces/piece-google-sheets",
"version": "0.14.0",
"version": "0.14.1",
"dependencies": {
"csv-parse": "5.6.0",
"googleapis": "129.0.0",
Expand Down
120 changes: 67 additions & 53 deletions packages/pieces/community/google-sheets/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import {
createPiece,
} from '@activepieces/pieces-framework';
import { createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { clearSheetAction } from './lib/actions/clear-sheet';
import { deleteRowAction } from './lib/actions/delete-row.action';
Expand All @@ -10,7 +8,12 @@ import { findRowsAction } from './lib/actions/find-rows';
import { getRowsAction } from './lib/actions/get-rows';
import { insertRowAction } from './lib/actions/insert-row.action';
import { updateRowAction } from './lib/actions/update-row';
import { getAccessToken, googleSheetsAuth, GoogleSheetsAuthValue, googleSheetsCommon } from './lib/common/common';
import {
getAccessToken,
googleSheetsAuth,
GoogleSheetsAuthValue,
googleSheetsCommon,
} from './lib/common/common';
import { newRowAddedTrigger } from './lib/triggers/new-row-added-webhook';
import { newOrUpdatedRowTrigger } from './lib/triggers/new-or-updated-row.trigger';
import { insertMultipleRowsAction } from './lib/actions/insert-multiple-rows.action';
Expand All @@ -25,55 +28,66 @@ import { updateMultipleRowsAction } from './lib/actions/update-multiple-rows';
import { createColumnAction } from './lib/actions/create-column';
import { exportSheetAction } from './lib/actions/export-sheet';
import { getManyRowsAction } from './lib/actions/get-many-rows';
import { renameWorksheetAction } from './lib/actions/rename-worksheet';
import { deleteWorksheetAction } from './lib/actions/delete-worksheet';
import { formatRowAction } from './lib/actions/format-spreadsheet-row';

export const googleSheets = createPiece({
minimumSupportedRelease: '0.71.4',
logoUrl: 'https://cdn.activepieces.com/pieces/google-sheets.png',
categories: [PieceCategory.PRODUCTIVITY],
authors: [
'ShayPunter',
'Ozak93',
'Abdallah-Alwarawreh',
'Salem-Alaa',
'kishanprmr',
'MoShizzle',
'AbdulTheActivePiecer',
'khaledmashaly',
'abuaboud',
'geekyme',
],
actions: [
insertRowAction,
insertMultipleRowsAction,
deleteRowAction,
updateRowAction,
findRowsAction,
createSpreadsheetAction,
createWorksheetAction,
clearSheetAction,
findRowByNumAction,
getRowsAction,
getManyRowsAction,
findSpreadsheets,
findWorksheetAction,
copyWorksheetAction,
updateMultipleRowsAction,
createColumnAction,
exportSheetAction,
createCustomApiCallAction({
auth: googleSheetsAuth,
baseUrl: () => {
return googleSheetsCommon.baseUrl;
},
authMapping: async (auth) => {
return {
Authorization: `Bearer ${(await getAccessToken(auth as GoogleSheetsAuthValue))}`,
};
},
}),
],
displayName: 'Google Sheets',
description: 'Create, edit, and collaborate on spreadsheets online',
triggers: [newOrUpdatedRowTrigger,newRowAddedTrigger,newSpreadsheetTrigger,newWorksheetTrigger],
auth: googleSheetsAuth,
minimumSupportedRelease: '0.71.4',
logoUrl: 'https://cdn.activepieces.com/pieces/google-sheets.png',
categories: [PieceCategory.PRODUCTIVITY],
authors: [
'ShayPunter',
'Ozak93',
'Abdallah-Alwarawreh',
'Salem-Alaa',
'kishanprmr',
'MoShizzle',
'AbdulTheActivePiecer',
'khaledmashaly',
'abuaboud',
'geekyme',
],
actions: [
insertRowAction,
insertMultipleRowsAction,
updateRowAction,
updateMultipleRowsAction,
deleteRowAction,
findRowsAction,
createSpreadsheetAction,
createWorksheetAction,
clearSheetAction,
deleteWorksheetAction,
renameWorksheetAction,
formatRowAction,
findRowByNumAction,
getRowsAction,
getManyRowsAction,
findSpreadsheets,
findWorksheetAction,
copyWorksheetAction,
createColumnAction,
exportSheetAction,
createCustomApiCallAction({
auth: googleSheetsAuth,
baseUrl: () => {
return googleSheetsCommon.baseUrl;
},
authMapping: async (auth) => {
return {
Authorization: `Bearer ${await getAccessToken(auth as GoogleSheetsAuthValue)}`,
};
},
}),
],
displayName: 'Google Sheets',
description: 'Create, edit, and collaborate on spreadsheets online',
triggers: [
newOrUpdatedRowTrigger,
newRowAddedTrigger,
newSpreadsheetTrigger,
newWorksheetTrigger,
],
auth: googleSheetsAuth,
});
100 changes: 48 additions & 52 deletions packages/pieces/community/google-sheets/src/lib/actions/clear-sheet.ts
Original file line number Diff line number Diff line change
@@ -1,64 +1,60 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { areSheetIdsValid, googleSheetsCommon } from '../common/common';
import { googleSheetsAuth } from '../common/common';
import { commonProps } from '../common/props';
import { commonProps, isFirstRowHeaderProp } from '../common/props';

export const clearSheetAction = createAction({
auth: googleSheetsAuth,
name: 'clear_sheet',
description: 'Clears all rows on an existing sheet',
displayName: 'Clear Sheet',
props: {
...commonProps,
is_first_row_headers: Property.Checkbox({
displayName: 'Is First row Headers?',
description: 'If the first row is headers',
required: true,
defaultValue: true,
}),
headerRow: Property.Number({
displayName: 'Header Row',
description: 'Which row contains the headers?',
required: true,
defaultValue: 1,
}),
},
async run({ propsValue, auth }) {
const { spreadsheetId, sheetId, is_first_row_headers:isFirstRowHeaders, headerRow } = propsValue;
auth: googleSheetsAuth,
name: 'clear_sheet',
description: 'Clears all rows on an existing sheet.',
displayName: 'Clear Sheet',
props: {
...commonProps,
is_first_row_headers: isFirstRowHeaderProp(),
headerRow: Property.Number({
displayName: 'Header Row Number',
description: 'Enter the row number where your column headers are located (usually row 1).',
required: true,
defaultValue: 1,
}),
},
async run({ propsValue, auth }) {
const {
spreadsheetId,
sheetId,
is_first_row_headers: isFirstRowHeaders,
headerRow,
} = propsValue;

if (!areSheetIdsValid(spreadsheetId, sheetId)) {
if (!areSheetIdsValid(spreadsheetId, sheetId)) {
throw new Error('Please select a spreadsheet and sheet first.');
}
await googleSheetsCommon.findSheetName(
auth,
spreadsheetId as string,
sheetId as number
);
await googleSheetsCommon.findSheetName(auth, spreadsheetId as string, sheetId as number);

const rowsToDelete: number[] = [];
const values = await googleSheetsCommon.getGoogleSheetRows({
spreadsheetId: spreadsheetId as string,
auth: auth,
sheetId: sheetId as number,
rowIndex_s: 1,
rowIndex_e: undefined,
headerRow: headerRow,
});
for (const key in values) {
if (key === '0' && isFirstRowHeaders) {
continue;
}
rowsToDelete.push(parseInt(key) + 1);
}
const rowsToDelete: number[] = [];
const values = await googleSheetsCommon.getGoogleSheetRows({
spreadsheetId: spreadsheetId as string,
auth: auth,
sheetId: sheetId as number,
rowIndex_s: 1,
rowIndex_e: undefined,
headerRow: headerRow,
});
for (const key in values) {
if (key === '0' && isFirstRowHeaders) {
continue;
}
rowsToDelete.push(parseInt(key) + 1);
}

const response = await googleSheetsCommon.clearSheet(
spreadsheetId as string,
sheetId as number,
auth,
isFirstRowHeaders ? 1 : 0,
rowsToDelete.length
);
const response = await googleSheetsCommon.clearSheet(
spreadsheetId as string,
sheetId as number,
auth,
isFirstRowHeaders ? 1 : 0,
rowsToDelete.length,
);

return response.body;
},
return response.body;
},
});
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,14 @@ import {
ValueInputOption,
} from '../common/common';
import { google } from 'googleapis';
import { OAuth2Client } from 'googleapis-common';
import { getWorkSheetName } from '../triggers/helpers';
import { commonProps } from '../common/props';

export const createColumnAction = createAction({
auth: googleSheetsAuth,
name: 'create-column',
displayName: 'Create Spreadsheet Column',
description: 'Adds a new column to a spreadsheet.',
description: 'Creates a new column in a specific spreadsheet.',
props: {
...commonProps,
columnName: Property.ShortText({
Expand Down Expand Up @@ -52,19 +51,19 @@ export const createColumnAction = createAction({
range: {
sheetId,
dimension: 'COLUMNS',
startIndex: columnIndex -1,
startIndex: columnIndex - 1,
endIndex: columnIndex,
},
},
},
],
},
});
columnLabel = columnToLabel(columnIndex-1);
columnLabel = columnToLabel(columnIndex - 1);
} else {
const headers = await getHeaderRow({
spreadsheetId:spreadsheetId as string,
sheetId :sheetId as number,
spreadsheetId: spreadsheetId as string,
sheetId: sheetId as number,
auth: context.auth,
});

Expand All @@ -90,7 +89,11 @@ export const createColumnAction = createAction({
columnLabel = columnToLabel(newColumnIndex);
}

const sheetName = await getWorkSheetName(context.auth, spreadsheetId as string , sheetId as number);
const sheetName = await getWorkSheetName(
context.auth,
spreadsheetId as string,
sheetId as number,
);

const response = await sheets.spreadsheets.values.update({
range: `${sheetName}!${columnLabel}1`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const createWorksheetAction = createAction({
auth: googleSheetsAuth,
name: 'create-worksheet',
displayName: 'Create Worksheet',
description:'Create a blank worksheet with a title.',
description:'Create a new blank worksheet with a title.',
props: {
includeTeamDrives: includeTeamDrivesProp(),
spreadsheetId: spreadsheetIdProp('Spreadsheet',''),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import { commonProps } from '../common/props';
export const deleteRowAction = createAction({
auth: googleSheetsAuth,
name: 'delete_row',
description: 'Delete a row on an existing sheet you have access to',
description: 'Delete a specific row from the selected sheet.',
displayName: 'Delete Row',
props: {
...commonProps,
rowId: Property.Number({
displayName: 'Row Number',
description: 'The row number to remove',
description: 'The number of the row you want to delete.',
required: true,
}),
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { googleSheetsAuth } from '../common/common';
import { createAction } from '@activepieces/pieces-framework';
import { includeTeamDrivesProp, sheetIdProp, spreadsheetIdProp } from '../common/props';
import { google } from 'googleapis';
import { createGoogleClient } from '../common/common';

export const deleteWorksheetAction = createAction({
auth: googleSheetsAuth,
name: 'delete-worksheet',
displayName: 'Delete Worksheet',
description: 'Permanently delete a specific worksheet.',
props: {
includeTeamDrives: includeTeamDrivesProp(),
spreadsheetId: spreadsheetIdProp('Spreadsheet', 'The ID of the spreadsheet to use.'),
sheetId: sheetIdProp('Worksheet', 'The ID of the worksheet to delete.'),
},
async run(context) {
const authClient = await createGoogleClient(context.auth);
const sheets = google.sheets({ version: 'v4', auth: authClient });

const response = await sheets.spreadsheets.batchUpdate({
spreadsheetId: context.propsValue.spreadsheetId,
requestBody: {
requests:[
{
deleteSheet:{
sheetId:context.propsValue.sheetId
}
}
]
},
});

return response.data;
},
});
Loading
Loading