diff --git a/packages/backend/src/apps/google-forms/dynamic-data/index.ts b/packages/backend/src/apps/google-forms/dynamic-data/index.ts new file mode 100644 index 00000000..cb6cd053 --- /dev/null +++ b/packages/backend/src/apps/google-forms/dynamic-data/index.ts @@ -0,0 +1,3 @@ +import listForms from './list-forms'; + +export default [listForms]; diff --git a/packages/backend/src/apps/google-forms/dynamic-data/list-forms/index.ts b/packages/backend/src/apps/google-forms/dynamic-data/list-forms/index.ts new file mode 100644 index 00000000..8acd0298 --- /dev/null +++ b/packages/backend/src/apps/google-forms/dynamic-data/list-forms/index.ts @@ -0,0 +1,34 @@ +import { IGlobalVariable, IJSONObject } from '@automatisch/types'; + +export default { + name: 'List forms', + key: 'listForms', + + async run($: IGlobalVariable) { + const forms: { + data: IJSONObject[]; + } = { + data: [], + }; + + const params = { + q: `mimeType='application/vnd.google-apps.form'`, + spaces: 'drive', + pageToken: undefined as unknown as string, + }; + + do { + const { data } = await $.http.get(`https://www.googleapis.com/drive/v3/files`, { params }); + params.pageToken = data.nextPageToken; + + for (const file of data.files) { + forms.data.push({ + value: file.id, + name: file.name, + }); + } + } while (params.pageToken); + + return forms; + }, +}; diff --git a/packages/backend/src/apps/google-forms/index.ts b/packages/backend/src/apps/google-forms/index.ts index c4246c6f..7836ac60 100644 --- a/packages/backend/src/apps/google-forms/index.ts +++ b/packages/backend/src/apps/google-forms/index.ts @@ -1,6 +1,7 @@ import defineApp from '../../helpers/define-app'; import addAuthHeader from './common/add-auth-header'; import auth from './auth'; +import dynamicData from './dynamic-data'; export default defineApp({ name: 'Google Forms', @@ -13,4 +14,5 @@ export default defineApp({ supportsConnections: true, beforeRequest: [addAuthHeader], auth, + dynamicData, });