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
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | ||
| service | Yes | ||
| user_google_email | Yes |
Implementation Reference
- gsheets/sheets_tools.py:22-70 (handler)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
- gsheets/__init__.py:7-23 (registration)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", ]