Skip to main content
Glama

mcp-google-sheets

index.ts5.83 kB
import { DynamicPropsValue, PiecePropValueSchema, Property, } from '@activepieces/pieces-framework'; import { baserowAuth } from '../../'; import { BaserowClient } from './client'; import { BaserowFieldType } from './constants'; export function makeClient( auth: PiecePropValueSchema<typeof baserowAuth> ): BaserowClient { const client = new BaserowClient(auth.apiUrl, auth.token); return client; } export const baserowCommon = { tableFields: (required = true) => Property.DynamicProperties({ displayName: 'Table Fields', required, refreshers: ['table_id'], props: async ({ auth, table_id }) => { if (!auth || !table_id) return {}; const fields: DynamicPropsValue = {}; try { const client = makeClient( auth as PiecePropValueSchema<typeof baserowAuth> ); const tableFields = await client.listTableFields( table_id as unknown as number ); for (const field of tableFields) { if ( !field.read_only && ![BaserowFieldType.FILE].includes(field.type) ) { switch (field.type) { case BaserowFieldType.BOOLEAN: fields[field.name] = Property.Checkbox({ displayName: field.name, required: false, }); break; case BaserowFieldType.RATING: fields[field.name] = Property.Number({ displayName: field.name, required: false, description: `Enter valid value between 1 and ${field.max_value}.`, }); break; case BaserowFieldType.DATE: fields[field.name] = Property.DateTime({ displayName: field.name, required: false, description: `Enter date in ${field.date_format} format ${ field.date_include_time ? 'and time in ' + field.date_time_format + ' hour format' : '' }.`, }); break; case BaserowFieldType.DURATION: fields[field.name] = Property.Number({ displayName: field.name, required: false, }); break; case BaserowFieldType.LINK_TO_TABLE: fields[field.name] = Property.Array({ displayName: field.name, required: false, description: `Enter row ids from table(ID: ${field.link_row_table_id}) that you want to link to.`, }); break; case BaserowFieldType.LONG_TEXT: fields[field.name] = Property.LongText({ displayName: field.name, required: false, }); break; case BaserowFieldType.MULTIPLE_COLLABORATORS: fields[field.name] = Property.Array({ displayName: field.name, required: false, description: 'Enter user ids that you want to link to.', }); break; case BaserowFieldType.SINGLE_SELECT: fields[field.name] = Property.StaticDropdown({ displayName: field.name, required: false, options: { disabled: false, options: field.select_options.map((option) => { return { label: option.value, value: option.value, }; }), }, }); break; case BaserowFieldType.MULTI_SELECT: fields[field.name] = Property.StaticMultiSelectDropdown({ displayName: field.name, required: false, options: { disabled: false, options: field.select_options.map((option) => { return { label: option.value, value: option.value, }; }), }, }); break; case BaserowFieldType.NUMBER: fields[field.name] = Property.Number({ displayName: field.name, required: false, }); break; case BaserowFieldType.EMAIL: case BaserowFieldType.PHONE_NUMBER: fields[field.name] = Property.ShortText({ displayName: field.name, required: false, }); break; case BaserowFieldType.TEXT: fields[field.name] = Property.ShortText({ displayName: field.name, required: false, defaultValue: field.text_default, }); break; case BaserowFieldType.URL: fields[field.name] = Property.ShortText({ displayName: field.name, required: false, }); break; } } } } catch (error) { console.log('Invalid Baserow Table ID.'); } return fields; }, }), };

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