Skip to main content
Glama

mcp-google-sheets

updated-page.ts3.65 kB
import { DedupeStrategy, Polling, pollingHelper, } from '@activepieces/pieces-common'; import { createTrigger, TriggerStrategy, OAuth2PropertyValue, } from '@activepieces/pieces-framework'; import dayjs from 'dayjs'; import { getPages } from '../common'; import { notionAuth } from '../..'; export const updatedPage = createTrigger({ auth: notionAuth, name: 'updated_page', displayName: 'Updated Page', description: 'Triggers whenever any page in your Notion workspace is modified or updated. Ideal for syncing content changes, backup processes, or notifying teams about documentation updates.', props: {}, sampleData: { object: 'page', id: '1d4805e9-774b-8056-820b-c1083bff77e3', created_time: '2025-04-13T23:35:00.000Z', last_edited_time: '2025-07-01T07:29:00.000Z', created_by: { object: 'user', id: '0f46d5cf-06ee-4350-8051-79ad10c898a6', }, last_edited_by: { object: 'user', id: '0f46d5cf-06ee-4350-8051-79ad10c898a6', }, cover: null, icon: { type: 'emoji', emoji: '💰', }, parent: { type: 'workspace', workspace: true, }, archived: false, in_trash: false, properties: { title: { id: 'title', type: 'title', title: [ { type: 'text', text: { content: 'Saas Ideas', link: null, }, annotations: { bold: false, italic: false, strikethrough: false, underline: false, code: false, color: 'default', }, plain_text: 'Saas Ideas', href: null, }, ], }, }, url: 'https://www.notion.so/Saas-Ideas-1d4805e9774b8056820bc1083bff77e3', public_url: null, }, type: TriggerStrategy.POLLING, async test(ctx) { return await pollingHelper.test(polling, { auth: ctx.auth, store: ctx.store, propsValue: ctx.propsValue, files: ctx.files, }); }, async onEnable(ctx) { await pollingHelper.onEnable(polling, { auth: ctx.auth, store: ctx.store, propsValue: ctx.propsValue, }); }, async onDisable(ctx) { await pollingHelper.onDisable(polling, { auth: ctx.auth, store: ctx.store, propsValue: ctx.propsValue, }); }, async run(ctx) { return await pollingHelper.poll(polling, { auth: ctx.auth, store: ctx.store, propsValue: ctx.propsValue, files: ctx.files, }); }, }); const polling: Polling<OAuth2PropertyValue, Record<string, never>> = { strategy: DedupeStrategy.LAST_ITEM, items: async ({ auth, lastItemId }) => { const lastItem = lastItemId as string; let lastEditedDate: Date | undefined; if (lastItem) { const lastUpdatedEpochMS = Number(lastItem.split('|')[1]); lastEditedDate = dayjs(lastUpdatedEpochMS).toDate(); } const items = await getUpdatedPages(auth, lastEditedDate); return items.map((item: any) => { const page = item as { last_edited_time: string; id: string }; return { id: page.id + '|' + dayjs(page.last_edited_time).valueOf(), data: item, }; }); }, }; const getUpdatedPages = async ( authentication: OAuth2PropertyValue, startDate?: Date ) => { const searchOptions = startDate ? { editedAfter: startDate } : undefined; const sortOptions = { property: 'last_edited_time', direction: 'descending' as const, }; const pages = await getPages(authentication, searchOptions, sortOptions); return pages; };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server