Skip to main content
Glama
taylorwilsdon

Google Workspace MCP Server - Control Gmail, Calendar, Docs, Sheets, Slides, Chat, Forms & Drive

list_spreadsheets

Retrieve and display a list of Google Drive spreadsheets accessible to a specified user, including file names, IDs, and modification times. Configure results limit for precise output.

Instructions

Lists spreadsheets from Google Drive that the user has access to.

Args:
    user_google_email (str): The user's Google email address. Required.
    max_results (int): Maximum number of spreadsheets to return. Defaults to 25.

Returns:
    str: A formatted list of spreadsheet files (name, ID, modified time).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
max_resultsNo
serviceYes
user_google_emailYes

Implementation Reference

  • The handler function for the 'list_spreadsheets' tool. It lists the user's spreadsheets from Google Drive using the Drive API, formats them with name, ID, modified time, and link, and returns a formatted string.
    @server.tool()
    @handle_http_errors("list_spreadsheets", is_read_only=True, service_type="sheets")
    @require_google_service("drive", "drive_read")
    async def list_spreadsheets(
        service,
        user_google_email: str,
        max_results: int = 25,
    ) -> str:
        """
        Lists spreadsheets from Google Drive that the user has access to.
    
        Args:
            user_google_email (str): The user's Google email address. Required.
            max_results (int): Maximum number of spreadsheets to return. Defaults to 25.
    
        Returns:
            str: A formatted list of spreadsheet files (name, ID, modified time).
        """
        logger.info(f"[list_spreadsheets] Invoked. Email: '{user_google_email}'")
    
        files_response = await asyncio.to_thread(
            service.files()
            .list(
                q="mimeType='application/vnd.google-apps.spreadsheet'",
                pageSize=max_results,
                fields="files(id,name,modifiedTime,webViewLink)",
                orderBy="modifiedTime desc",
                supportsAllDrives=True,
                includeItemsFromAllDrives=True,
            )
            .execute
        )
    
        files = files_response.get("files", [])
        if not files:
            return f"No spreadsheets found for {user_google_email}."
    
        spreadsheets_list = [
            f"- \"{file['name']}\" (ID: {file['id']}) | Modified: {file.get('modifiedTime', 'Unknown')} | Link: {file.get('webViewLink', 'No link')}"
            for file in files
        ]
    
        text_output = (
            f"Successfully listed {len(files)} spreadsheets for {user_google_email}:\n"
            + "\n".join(spreadsheets_list)
        )
    
        logger.info(f"Successfully listed {len(files)} spreadsheets for {user_google_email}.")
        return text_output
  • The import and __all__ registration of the list_spreadsheets tool in the gs sheets module, making it available when the package is imported.
    from .sheets_tools import (
        list_spreadsheets,
        get_spreadsheet_info,
        read_sheet_values,
        modify_sheet_values,
        create_spreadsheet,
        create_sheet,
    )
    
    __all__ = [
        "list_spreadsheets",
        "get_spreadsheet_info", 
        "read_sheet_values",
        "modify_sheet_values",
        "create_spreadsheet",
        "create_sheet",
    ]

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/taylorwilsdon/google_workspace_mcp'

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