Skip to main content
Glama

sheets_create_spreadsheet

Create a new Google Sheets spreadsheet with customizable titles, sheet configurations, and predefined rows and columns through the mcp-gsheets server.

Instructions

Create a new Google Sheets spreadsheet

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sheetsNoArray of sheets to create in the spreadsheet
titleYesThe title of the new spreadsheet

Implementation Reference

  • The main handler function that executes the tool logic: validates input, gets authenticated Sheets client, builds request body with title and optional sheets config, creates the spreadsheet via API, formats and returns response, handles errors.
    export async function handleCreateSpreadsheet(input: any) {
      try {
        const validatedInput = validateCreateSpreadsheetInput(input);
        const sheets = await getAuthenticatedClient();
    
        const requestBody: any = {
          properties: {
            title: validatedInput.title,
          },
        };
    
        if (validatedInput.sheets && validatedInput.sheets.length > 0) {
          requestBody.sheets = validatedInput.sheets.map((sheet, index) => ({
            properties: {
              title: sheet.title || `Sheet${index + 1}`,
              gridProperties: {
                rowCount: sheet.rowCount || 1000,
                columnCount: sheet.columnCount || 26,
              },
            },
          }));
        }
    
        const response = await sheets.spreadsheets.create({
          requestBody,
        });
    
        return formatSpreadsheetCreatedResponse(response.data);
      } catch (error) {
        return handleError(error);
      }
    }
  • The Tool definition object with name, description, and detailed inputSchema for validating the tool parameters.
    export const createSpreadsheetTool: Tool = {
      name: 'sheets_create_spreadsheet',
      description: 'Create a new Google Sheets spreadsheet',
      inputSchema: {
        type: 'object',
        properties: {
          title: {
            type: 'string',
            description: 'The title of the new spreadsheet',
          },
          sheets: {
            type: 'array',
            items: {
              type: 'object',
              properties: {
                title: {
                  type: 'string',
                  description: 'The title of the sheet',
                },
                rowCount: {
                  type: 'number',
                  description: 'Number of rows in the sheet (default: 1000)',
                },
                columnCount: {
                  type: 'number',
                  description: 'Number of columns in the sheet (default: 26)',
                },
              },
            },
            description: 'Array of sheets to create in the spreadsheet',
          },
        },
        required: ['title'],
      },
    };
  • src/index.ts:32-64 (registration)
    The toolHandlers Map registration that maps the tool name 'sheets_create_spreadsheet' to its handler function tools.handleCreateSpreadsheet for execution dispatch.
    const toolHandlers = new Map<string, (input: any) => Promise<any>>([
      ['sheets_check_access', tools.handleCheckAccess],
      ['sheets_get_values', tools.handleGetValues],
      ['sheets_batch_get_values', tools.handleBatchGetValues],
      ['sheets_get_metadata', tools.handleGetMetadata],
      ['sheets_update_values', tools.handleUpdateValues],
      ['sheets_batch_update_values', tools.handleBatchUpdateValues],
      ['sheets_append_values', tools.handleAppendValues],
      ['sheets_clear_values', tools.handleClearValues],
      ['sheets_create_spreadsheet', tools.handleCreateSpreadsheet],
      ['sheets_insert_sheet', tools.handleInsertSheet],
      ['sheets_delete_sheet', tools.handleDeleteSheet],
      ['sheets_duplicate_sheet', tools.handleDuplicateSheet],
      ['sheets_copy_to', tools.handleCopyTo],
      ['sheets_update_sheet_properties', tools.handleUpdateSheetProperties],
      ['sheets_format_cells', tools.formatCellsHandler],
      ['sheets_update_borders', tools.updateBordersHandler],
      ['sheets_merge_cells', tools.mergeCellsHandler],
      ['sheets_unmerge_cells', tools.unmergeCellsHandler],
      ['sheets_add_conditional_formatting', tools.addConditionalFormattingHandler],
      // Batch operations
      ['sheets_batch_delete_sheets', tools.handleBatchDeleteSheets],
      ['sheets_batch_format_cells', tools.handleBatchFormatCells],
      // Chart operations
      ['sheets_create_chart', tools.handleCreateChart],
      ['sheets_update_chart', tools.handleUpdateChart],
      ['sheets_delete_chart', tools.handleDeleteChart],
      // Link and date operations
      ['sheets_insert_link', tools.handleInsertLink],
      ['sheets_insert_date', tools.handleInsertDate],
      // Row operations
      ['sheets_insert_rows', tools.handleInsertRows],
    ]);

Latest Blog Posts

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/freema/mcp-gsheets'

If you have feedback or need assistance with the MCP directory API, please join our Discord server