Skip to content

Commit

Permalink
feat(google-sheets): add new spreadsheet rows trigger
Browse files Browse the repository at this point in the history
  • Loading branch information
ridvanakca authored and barinali committed Jun 2, 2023
1 parent 43e957e commit 9f759d7
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/backend/src/apps/google-sheets/triggers/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import newSpreadsheets from './new-spreadsheets';
import newWorksheets from './new-worksheets';
import newSpreadsheetRows from './new-spreadsheet-rows';

export default [newSpreadsheets, newWorksheets];
export default [newSpreadsheets, newWorksheets, newSpreadsheetRows];
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import defineTrigger from '../../../../helpers/define-trigger';
import newSpreadsheetRows from './new-spreadsheet-rows';

export default defineTrigger({
name: 'New spreadsheet rows',
key: 'newSpreadsheetRows',
pollInterval: 15,
description:
'Triggers when a new row is added to the bottom of a spreadsheet.',
arguments: [
{
label: 'Drive',
key: 'driveId',
type: 'dropdown' as const,
required: false,
description:
'The Google Drive where your spreadsheet resides. If nothing is selected, then your personal Google Drive will be used.',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listDrives',
},
],
},
},
{
label: 'Spreadsheet',
key: 'spreadsheetId',
type: 'dropdown' as const,
required: true,
dependsOn: ['parameters.driveId'],
description: 'The spreadsheets in your Google Drive.',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listSpreadsheets',
},
{
name: 'parameters.driveId',
value: '{parameters.driveId}',
},
],
},
},
{
label: 'Worksheet',
key: 'worksheetId',
type: 'dropdown' as const,
required: true,
dependsOn: ['parameters.spreadsheetId'],
description:
'The worksheets in your selected spreadsheet. You must have column headers.',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listWorksheets',
},
{
name: 'parameters.spreadsheetId',
value: '{parameters.spreadsheetId}',
},
],
},
},
],

async run($) {
await newSpreadsheetRows($);
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { IGlobalVariable } from '@automatisch/types';

type TSheetsResponse = {
sheets: {
properties: {
sheetId: string;
title: string;
};
}[];
};

const newSpreadsheetRows = async ($: IGlobalVariable) => {
const {
data: { sheets },
} = await $.http.get<TSheetsResponse>(
`/v4/spreadsheets/${$.step.parameters.spreadsheetId}`
);

const selectedSheet = sheets.find(
(sheet) => sheet.properties.sheetId === $.step.parameters.worksheetId
);

if (!selectedSheet) return;

const sheetName = selectedSheet.properties.title;

const range = sheetName;

const { data } = await $.http.get(
`v4/spreadsheets/${$.step.parameters.spreadsheetId}/values/${range}`
);

if (data.values?.length) {
for (let index = data.values.length - 1; index > 0; index--) {
const value = data.values[index];
$.pushTriggerItem({
raw: { row: value },
meta: {
internalId: index.toString(),
},
});
}
}
};

export default newSpreadsheetRows;
2 changes: 2 additions & 0 deletions packages/docs/pages/apps/google-sheets/triggers.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ items:
desc: Triggers when you create a new spreadsheet
- name: New worksheets
desc: Triggers when you create a new worksheet in a spreadsheet
- name: New spreadsheet rows
desc: Triggers when a new row is added to the bottom of a spreadsheet
---

<script setup>
Expand Down

0 comments on commit 9f759d7

Please sign in to comment.