Skip to main content
Glama

mcp-google-sheets

update-lead.ts4.47 kB
import { createAction, InputPropertyMap, Property, } from '@activepieces/pieces-framework'; import { CopperAuth, isNonEmptyStr } from '../common/constants'; import { leadDropdown, peopleDropdown } from '../common/props'; import { CopperApiService } from '../common/requests'; export const updateLead = createAction({ auth: CopperAuth, name: 'updateLead', displayName: 'Update Lead', description: 'Updates an existing lead.', props: { leadId: leadDropdown(['auth']), fields: Property.DynamicProperties({ displayName: '', description: '', refreshers: ['auth', 'leadId'], required: false, props: async ({ auth, leadId }: any): Promise<InputPropertyMap> => { if (!auth || !leadId) return {}; const lead = JSON.parse(leadId); return { name: Property.ShortText({ displayName: 'Full Name', required: true, defaultValue: lead.name, }), email: Property.ShortText({ displayName: 'Email', required: true, defaultValue: lead.email.email, }), category: Property.ShortText({ displayName: 'Category of the email address (e.g., work, personal)', required: true, defaultValue: lead.email.category, }), phone_numbers: Property.Array({ displayName: 'Phone Numbers', required: false, properties: { number: Property.ShortText({ displayName: 'Number', required: true, }), category: Property.ShortText({ displayName: 'Category (e.g., mobile, work, personal)', required: true, }), }, defaultValue: lead.phone_numbers, }), address_street: Property.ShortText({ displayName: 'Street', required: false, defaultValue: lead.address?.street, }), address_city: Property.ShortText({ displayName: 'City', required: false, defaultValue: lead.address?.city, }), address_state: Property.ShortText({ displayName: 'State/Region', required: false, defaultValue: lead.address?.state, }), address_postal_code: Property.ShortText({ displayName: 'Postal Code', required: false, defaultValue: lead.address?.postal_code, }), address_country: Property.ShortText({ displayName: 'Country', required: false, defaultValue: lead.address?.country, }), }; }, }), }, async run(context) { const fields = (context.propsValue as any).fields; const leadId = (context.propsValue as any).leadId; const lead = JSON.parse(leadId); const { name, email, category, address_street, address_city, address_state, address_postal_code, address_country, phone_numbers, } = fields; const normPhones = (Array.isArray(phone_numbers) ? phone_numbers : []) .map((p) => ({ number: String(p?.number ?? '').trim(), category: isNonEmptyStr(p?.category) ? String(p.category).trim() : undefined, })) .filter((p) => isNonEmptyStr(p.number)); const address = [ address_street, address_city, address_state, address_postal_code, address_country, ].some(isNonEmptyStr) ? { street: isNonEmptyStr(address_street) ? address_street.trim() : undefined, city: isNonEmptyStr(address_city) ? address_city.trim() : undefined, state: isNonEmptyStr(address_state) ? address_state.trim() : undefined, postal_code: isNonEmptyStr(address_postal_code) ? address_postal_code.trim() : undefined, country: isNonEmptyStr(address_country) ? address_country.trim() : undefined, } : undefined; const body: any = { name, email: { email, category, }, ...(normPhones.length ? { phone_numbers: normPhones } : {}), ...(address ? { address } : {}), }; return await CopperApiService.updateLead(context.auth, lead.id, body); }, });

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