Skip to main content
Glama

mcp-google-sheets

helper.ts3.1 kB
import { DynamicPropsValue, Property } from '@activepieces/pieces-framework'; import { httpClient, HttpMethod, HttpRequest, } from '@activepieces/pieces-common'; // Function Section export const mapMauticToActivepiecesProperty = ( type: string, fieldMetadata: { displayName: string; required: boolean; }, properties: object ) => { switch (type) { case 'lookup': case 'text': case 'email': case 'tel': case 'region': case 'country': case 'locale': case 'timezone': case 'url': return Property.ShortText(fieldMetadata); case 'date': case 'datetime': return Property.DateTime(fieldMetadata); case 'number': return Property.Number(fieldMetadata); case 'boolean': return Property.StaticDropdown({ ...fieldMetadata, options: { options: [ { value: 'no', label: 'No' }, { value: 'yes', label: 'Yes' }, ], }, }); case 'multiselect': return Property.StaticMultiSelectDropdown({ ...fieldMetadata, options: { options: Object.values(properties)[0], }, }); case 'select': return Property.StaticDropdown({ ...fieldMetadata, options: { options: Object.values(properties)[0], }, }); default: console.error(`No support of type ${type}`); return null; } }; export const fetchDynamicFieldsFromMetadata = async ( baseUrl: string, username: string, password: string, type: 'contact' | 'company' | 'lead' ) => { const request: HttpRequest = { method: HttpMethod.GET, url: `${ baseUrl.endsWith('/') ? baseUrl : baseUrl + '/' }api/fields/${type}?limit=1000`, headers: { Authorization: `Basic ${Buffer.from(`${username}:${password}`).toString( 'base64' )}`, 'Content-Type': 'application/json', }, }; const result = await httpClient.sendRequest(request); if (result.status == 200) { return Object.values(result.body.fields).reduce( (fields: DynamicPropsValue, field) => { const { label: displayName, alias, type, properties, } = field as Record<string, any>; const fieldMetadata = { displayName, required: false, }; if (!type) return {}; const f = mapMauticToActivepiecesProperty( type, fieldMetadata, properties ); if (f) { fields[alias] = f; } return fields; }, {} ); } throw Error(`Unable to fetch ${type} metadata`); }; export const getFields = (type: 'contact' | 'company' | 'lead') => Property.DynamicProperties({ displayName: 'All Fields', description: 'List of all possible fields present', required: true, refreshers: [], props: async ({ auth }) => { if (!auth) return {}; const { base_url, username, password } = auth; return fetchDynamicFieldsFromMetadata(base_url, username, password, type); }, });

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