-
Notifications
You must be signed in to change notification settings - Fork 324
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(google-sheets): add new spreadsheet rows trigger
- Loading branch information
1 parent
43e957e
commit 9f759d7
Showing
4 changed files
with
132 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]; |
82 changes: 82 additions & 0 deletions
82
packages/backend/src/apps/google-sheets/triggers/new-spreadsheet-rows/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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($); | ||
}, | ||
}); |
46 changes: 46 additions & 0 deletions
46
...ages/backend/src/apps/google-sheets/triggers/new-spreadsheet-rows/new-spreadsheet-rows.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters