feat(google-sheets): add new spreadsheet rows trigger

This commit is contained in:
Rıdvan Akca
2023-05-31 23:13:04 +03:00
committed by Ali BARIN
parent 43e957e8d3
commit 9f759d70b6
4 changed files with 132 additions and 1 deletions

View File

@@ -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];

View File

@@ -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($);
},
});

View File

@@ -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;

View File

@@ -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>