Skip to main content
Glama

mcp-google-sheets

find-activity.ts2.41 kB
import { pipedriveAuth } from '../../index'; import { createAction, Property } from '@activepieces/pieces-framework'; import { activityTypeIdProp, filterIdProp, ownerIdProp } from '../common/props'; import { pipedrivePaginatedV2ApiCall } from '../common'; import { HttpMethod } from '@activepieces/pieces-common'; import { isNil } from '@activepieces/shared'; export const findActivityAction = createAction({ auth: pipedriveAuth, name: 'find-activity', displayName: 'Find Activity', description: 'Finds an activity by subject.', props: { subject: Property.ShortText({ displayName: 'Subject', required: true, }), exactMatch: Property.Checkbox({ displayName: 'Exact Match', required: false, defaultValue: true, }), assignTo: ownerIdProp('Assign To', false), type: activityTypeIdProp(false), filterId: filterIdProp('activity', false), status: Property.StaticDropdown({ displayName: 'Status', required: false, options: { disabled: false, options: [ { label: 'Done', value: 1, }, { label: 'Not Done', value: 0, }, ], }, }), }, async run(context) { const { subject, assignTo, type, filterId, status, exactMatch } = context.propsValue; const response = await pipedrivePaginatedV2ApiCall<{ id: number; subject: string; type: string; }>({ accessToken: context.auth.access_token, apiDomain: context.auth.data['api_domain'], method: HttpMethod.GET, resourceUri: '/v2/activities', query: { owner_id: assignTo, done: status != null ? status === 1 : undefined, sort_by: 'update_time', sort_direction: 'desc', filter_id: filterId, }, }); if (isNil(response) || response.length === 0) { return { found: false, data: [], }; } const result = []; for (const activity of response) { let matched = false; if (activity.subject) { if (exactMatch && activity.subject === subject) { matched = true; } else if (!exactMatch && activity.subject.toLowerCase().includes(subject.toLowerCase())) { matched = true; } } // If type is provided, require both subject & type match if (type) { if (matched && activity.type === type) { result.push(activity); } } else { if (matched) { result.push(activity); } } } return { found: result.length > 0, data: result, }; }, });

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