feat(google-forms): add new form responses trigger

This commit is contained in:
Ali BARIN
2023-01-03 21:03:33 +01:00
parent 0b52a1bd01
commit 30c95da90e
5 changed files with 67 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
const authScope: string[] = [
'https://www.googleapis.com/auth/forms.body.readonly',
'https://www.googleapis.com/auth/forms.responses.readonly',
'https://www.googleapis.com/auth/drive.readonly',
'https://www.googleapis.com/auth/userinfo.email',
'profile',

View File

@@ -1,6 +1,7 @@
import defineApp from '../../helpers/define-app';
import addAuthHeader from './common/add-auth-header';
import auth from './auth';
import triggers from './triggers';
import dynamicData from './dynamic-data';
export default defineApp({
@@ -14,5 +15,6 @@ export default defineApp({
supportsConnections: true,
beforeRequest: [addAuthHeader],
auth,
triggers,
dynamicData,
});

View File

@@ -0,0 +1,3 @@
import newFormResponses from './new-form-responses';
export default [newFormResponses];

View File

@@ -0,0 +1,33 @@
import defineTrigger from '../../../../helpers/define-trigger';
import newFormResponses from './new-form-responses';
export default defineTrigger({
name: 'New Form Responses',
key: 'newFormResponses',
pollInterval: 15,
description: 'Triggers when a new form response is submitted.',
arguments: [
{
label: 'Form',
key: 'formId',
type: 'dropdown' as const,
required: true,
description: 'Pick a form to receive form responses.',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listForms',
},
],
},
},
],
async run($) {
await newFormResponses($);
},
});

View File

@@ -0,0 +1,28 @@
import { IGlobalVariable } from '@automatisch/types';
const newResponses = async ($: IGlobalVariable) => {
const params = {
pageToken: undefined as unknown as string,
};
do {
const pathname = `/v1/forms/${$.step.parameters.formId}/responses`;
const { data } = await $.http.get(pathname, { params });
params.pageToken = data.nextPageToken;
if (data.responses?.length) {
for (const formResponse of data.responses) {
const dataItem = {
raw: formResponse,
meta: {
internalId: formResponse.responseId,
},
};
$.pushTriggerItem(dataItem);
}
}
} while (params.pageToken);
};
export default newResponses;