Merge pull request #1035 from automatisch/gdrive-updated-files-trigger

feat(google-drive): add updated files trigger
This commit is contained in:
Ali BARIN
2023-03-30 16:26:27 +02:00
committed by GitHub
4 changed files with 96 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
import newFiles from './new-files';
import newFilesInFolder from './new-files-in-folder';
import newFolders from './new-folders';
import updatedFiles from './updated-files';
export default [newFiles, newFilesInFolder, newFolders];
export default [newFiles, newFilesInFolder, newFolders, updatedFiles];

View File

@@ -0,0 +1,52 @@
import defineTrigger from '../../../../helpers/define-trigger';
import updatedFiles from './updated-files';
export default defineTrigger({
name: 'Updated Files',
key: 'updatedFiles',
pollInterval: 15,
description:
'Triggers when a file is updated in a specific folder (but not its subfolder).',
arguments: [
{
label: 'Folder',
key: 'folderId',
type: 'dropdown' as const,
required: false,
description:
'Check a specific folder for updated files. Please note: files located in subfolders of the folder you choose here will NOT trigger this flow. Defaults to the top-level folder if none is picked.',
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listFolders',
},
],
},
},
{
label: 'Include Deleted',
key: 'includeDeleted',
type: 'dropdown' as const,
required: true,
value: true,
description: 'Should this trigger also on files that are deleted?',
options: [
{
label: 'Yes',
value: true,
},
{
label: 'No',
value: false,
},
],
},
],
async run($) {
await updatedFiles($);
},
});

View File

@@ -0,0 +1,40 @@
import { IGlobalVariable } from '@automatisch/types';
const updatedFiles = async ($: IGlobalVariable) => {
let q = `mimeType!='application/vnd.google-apps.folder'`;
if ($.step.parameters.includeDeleted === false) {
q += ` and trashed=${$.step.parameters.includeDeleted}`;
}
if ($.step.parameters.folderId) {
q += ` and '${$.step.parameters.folderId}' in parents`;
} else {
q += ` and parents in 'root'`;
}
const params = {
pageToken: undefined as unknown as string,
orderBy: 'modifiedTime desc',
fields: '*',
pageSize: 1000,
q,
};
do {
const { data } = await $.http.get(`/v3/files`, { params });
params.pageToken = data.nextPageToken;
if (data.files?.length) {
for (const file of data.files) {
$.pushTriggerItem({
raw: file,
meta: {
internalId: `${file.id}-${file.modifiedTime}`,
},
});
}
}
} while (params.pageToken);
};
export default updatedFiles;

View File

@@ -7,6 +7,8 @@ items:
desc: Triggers when a new file is added directly to a specific folder (but not its subfolder)
- name: New Folders
desc: Triggers when a new folder is added directly to a specific folder (but not its subfolder)
- name: Updated Files
desc: Triggers when a file is updated in a specific folder (but not its subfolder)
---
<script setup>