Skip to main content
Glama

mcp-google-sheets

set-custom-fields.ts3.29 kB
import { createAction, DynamicPropsValue, Property } from '@activepieces/pieces-framework'; import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common'; import { BASE_URL, subscriberId } from '../common/props'; import { manychatAuth } from '../../index'; export const setCustomFieldAction = createAction({ auth: manychatAuth, name: 'setCustomField', displayName: 'Set Custom Field', description: 'Ass or Updates a custom field value for a user.', props: { subscriber_id: subscriberId, field_id: Property.Dropdown({ displayName: 'Custom Field', refreshers: [], required: true, options: async ({ auth }) => { if (!auth) { return { placeholder: 'Please connect your account.', disabled: true, options: [], }; } const response = await httpClient.sendRequest<{ data: Array<{ id: number; name: string; type: string }>; }>({ url: `${BASE_URL}/page/getCustomFields`, method: HttpMethod.GET, authentication: { type: AuthenticationType.BEARER_TOKEN, token: auth as string, }, }); return { disabled: false, options: response.body.data .filter((field) => field.type !== 'array') .map((field) => ({ label: field.name, value: `${field.id}:::${field.type}`, })), }; }, }), field_value: Property.DynamicProperties({ displayName: 'Field Value', required: true, refreshers: ['field_id'], props: async ({ auth, field_id }) => { if (!auth || !field_id) return {}; const fields: DynamicPropsValue = {}; const fieldType = (field_id as unknown as string).split(':::')[1]; switch (fieldType) { case 'text': fields['value'] = Property.ShortText({ displayName: 'Value', required: true, }); break; case 'number': fields['value'] = Property.Number({ displayName: 'Value', required: true, }); break; case 'date': case 'datetime': fields['value'] = Property.DateTime({ displayName: 'Value', required: true, }); break; case 'boolean': fields['value'] = Property.Checkbox({ displayName: 'Value', required: true, }); break; default: break; } return fields; }, }), }, async run({ auth, propsValue }) { const { subscriber_id, field_id, field_value } = propsValue; const setCustomFieldResponse = await httpClient.sendRequest({ method: HttpMethod.POST, url: `${BASE_URL}/subscriber/setCustomField`, authentication: { type: AuthenticationType.BEARER_TOKEN, token: auth, }, body: { subscriber_id, field_id: field_id.split(':::')[0], field_value: field_value['value'], }, }); if (setCustomFieldResponse.body.status !== 'success') { throw Error(`Unexpected Error occured : ${JSON.stringify(setCustomFieldResponse.body)}`); } const userResponse = await httpClient.sendRequest<{ data: Record<string, any> }>({ method: HttpMethod.GET, url: `${BASE_URL}/subscriber/getInfo`, authentication: { type: AuthenticationType.BEARER_TOKEN, token: auth, }, queryParams: { subscriber_id: `${subscriber_id}`, }, }); return userResponse.body.data; }, });

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