Godri-谷歌云端硬盘CLI工具
一个全面的Python CLI工具,用于Google Drive和Google Workspace操作,具有干净的分层命令结构。
特性
- Google 云端硬盘:搜索、上传、下载文件和管理文件夹
- 谷歌文件:使用markdown支持创建、读取和更新文档
- 谷歌表格:全面的电子表格操作(创建、管理工作表、读/写值、公式、格式、行/列)
- 谷歌幻灯片:全面的演示操作(创建、主题、布局、幻灯片、内容管理)
- 翻译:使用Google Translate API翻译文本
- MCP 服务器:模型上下文协议与13多个工作表工具和结构化数据支持集成
- 认证:使用持久令牌保护OAuth2流
安装
- 克隆此存储库
- 安装软件包:
git clone https://github.com/sebastienmorand-loreal/godri.git
cd godri
uv run pip install -e .设置
1.Google API证书
- 去 谷歌云控制台
- 创建新项目或选择现有项目
- 启用以下API:
- Google Drive API - 谷歌文档API - 谷歌网页API - 谷歌幻灯片API - 谷歌云翻译API (翻译功能需要)
- 为桌面应用程序创建凭据(OAuth 2.0客户端ID)
- 下载客户端机密JSON文件
2.环境配置
设置 GODRI_CLIENT_FILE 环境变量:
export GODRI_CLIENT_FILE="/path/to/your/client_secret.json"3.身份验证
使用Google API进行身份验证:
godri auth这将打开一个用于OAuth同意的浏览器,并创建 ~/.godri-token.json 用于后续请求。
指挥结构
Godri使用了一个干净的分层命令结构:
godri [--verbose] [args...]命令参考
认证
# Authenticate with Google APIs
godri auth
# Force re-authentication (delete existing token)
godri auth --force谷歌云端硬盘运营
搜索文件
# Search by query
godri drive search --query "name contains 'report'"
# Search by name
godri drive search --name "document" --limit 50
# Search with MIME type filter
godri drive search --name "spreadsheet" --mime-type "application/vnd.google-apps.spreadsheet"文件操作
# Upload file
godri drive upload /path/to/file.txt --folder-id "FOLDER_ID" --name "Custom Name"
# Download file (original format)
godri drive download "FILE_ID" /path/to/output.txt
# Smart download (converts Google Workspace files to Office formats)
godri drive download "FILE_ID" /path/to/output --smart智能下载转换:
- 谷歌文件→ Word(.docx)
- 谷歌表格→ Excel(.xlsx)
- 谷歌幻灯片→ PowerPoint(.pptx)
- 其他谷歌工作区→ PDF(.PDF)
文件夹管理
# Create folder
godri drive folder create "My Folder" --parent-id "PARENT_FOLDER_ID"
# Delete file or folder
godri drive folder delete "FILE_OR_FOLDER_ID"谷歌文档操作
# Create document
godri docs create-document "Document Title" --folder-id "FOLDER_ID" --content "Initial content" --markdown
# Read document
godri docs read "DOCUMENT_ID" --plain-text
# Update document
godri docs update "DOCUMENT_ID" "New content" --markdown --replace --index 1
# Translate document (preserves formatting)
godri docs translate "DOCUMENT_ID" "fr" --source-language "en"
godri docs translate "DOCUMENT_ID" "es" --start-index 10 --end-index 100谷歌表格操作
创建电子表格
godri sheets create-document "Spreadsheet Title" --folder-id "FOLDER_ID"表单管理
# List all sheets in spreadsheet
godri sheets read "SPREADSHEET_ID"
# Create new sheet
godri sheets create "SPREADSHEET_ID" "Sheet Name"
# Hide/unhide sheets
godri sheets hide "SPREADSHEET_ID" "Sheet Name"
godri sheets unhide "SPREADSHEET_ID" "Sheet Name"
# Delete sheet
godri sheets delete "SPREADSHEET_ID" "Sheet Name"价值观运营
# Read sheet data
godri sheets values read "SPREADSHEET_ID" --sheet-name "Sheet1" --range "A1:C10" --json --limit 100
# Set values
godri sheets values set "SPREADSHEET_ID" "A1:B2" "Value1,Value2,Value3,Value4"
godri sheets values set "SPREADSHEET_ID" "A1" '[[\"Row1Col1\",\"Row1Col2\"],[\"Row2Col1\",\"Row2Col2\"]]'
# Set formula
godri sheets values set "SPREADSHEET_ID" "C1" "SUM(A1:B1)" --formula
# Set values with formatting
godri sheets values set "SPREADSHEET_ID" "A1" "Bold Text" --format '{"textFormat":{"bold":true}}'
# Format cells (using JSON) - Basic examples
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"backgroundColor":{"red":1.0,"green":0.8,"blue":0.8}}'
# Copy formatting from another range
godri sheets values format "SPREADSHEET_ID" "A1:B5" --from "C1:C1"
# Copy single cell format to larger range (pattern replication)
godri sheets values format "SPREADSHEET_ID" "A1:E10" --from "A1"
# Copy multi-cell pattern with tiling
godri sheets values format "SPREADSHEET_ID" "A1:F10" --from "A1:B2"综合格式示例
字体和文本样式:
# Set font family to Arial
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"fontFamily":"Arial"}}'
# Set font family to Calibri
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"fontFamily":"Calibri"}}'
# Make text bold
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"bold":true}}'
# Make text italic
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"italic":true}}'
# Make text underlined
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"underline":true}}'
# Set font size to 14pt
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"fontSize":14}}'颜色(RGB值从0.0到1.0):
# Red text
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"foregroundColor":{"red":1.0,"green":0.0,"blue":0.0}}}'
# Blue text
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"foregroundColor":{"red":0.0,"green":0.0,"blue":1.0}}}'
# Green text
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"foregroundColor":{"red":0.0,"green":0.8,"blue":0.0}}}'
# Yellow background
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"backgroundColor":{"red":1.0,"green":1.0,"blue":0.0}}'
# Light blue background
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"backgroundColor":{"red":0.8,"green":0.9,"blue":1.0}}'
# Light gray background
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"backgroundColor":{"red":0.9,"green":0.9,"blue":0.9}}'组合格式:
# Header style: bold Arial 12pt with gray background
godri sheets values format "SPREADSHEET_ID" "A1:E1" --format-options '{"textFormat":{"bold":true,"fontFamily":"Arial","fontSize":12},"backgroundColor":{"red":0.8,"green":0.8,"blue":0.8}}'
# Error style: bold red text with light red background
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"bold":true,"foregroundColor":{"red":1.0,"green":0.0,"blue":0.0}},"backgroundColor":{"red":1.0,"green":0.9,"blue":0.9}}'
# Success style: italic green text with light green background
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"italic":true,"foregroundColor":{"red":0.0,"green":0.6,"blue":0.0}},"backgroundColor":{"red":0.9,"green":1.0,"blue":0.9}}'
# Professional style: Calibri 11pt, center aligned
godri sheets values format "SPREADSHEET_ID" "A1:B5" --format-options '{"textFormat":{"fontFamily":"Calibri","fontSize":11},"horizontalAlignment":"CENTER"}'行/列操作
# Add/remove rows
godri sheets rows add "SPREADSHEET_ID" 5 --count 2 --sheet-name "Sheet1"
godri sheets rows remove "SPREADSHEET_ID" 5 --count 2 --sheet-name "Sheet1"
# Add/remove columns
godri sheets columns add "SPREADSHEET_ID" "C" --count 1 --sheet-name "Sheet1"
godri sheets columns remove "SPREADSHEET_ID" "C" --count 1 --sheet-name "Sheet1"在电子表格之间复制表格
# Copy single sheet to another spreadsheet
godri sheets copy "SOURCE_SPREADSHEET_ID" "TARGET_SPREADSHEET_ID" "Sheet Name"
# Copy single sheet with custom target name
godri sheets copy "SOURCE_SPREADSHEET_ID" "TARGET_SPREADSHEET_ID" "Sheet1" --target-name "Copy of Sheet1"
# Copy multiple sheets
godri sheets copy "SOURCE_SPREADSHEET_ID" "TARGET_SPREADSHEET_ID" "Sheet1" "Sheet2" "Data"
# Copy sheets without preserving formatting
godri sheets copy "SOURCE_SPREADSHEET_ID" "TARGET_SPREADSHEET_ID" "Sheet1" --no-preserve-formatting复制功能:
- 单页副本: 复制具有可选自定义命名的单个图纸
- 多页副本: 通过批处理在一次操作中复制多张图纸
- 格式保留: 默认情况下,保留所有单元格格式、样式和结构
- 名称碰撞处理: 自动处理带有编号的重复名称(例如,“Sheet1(副本)”、“Sheet1
- 错误报告: 批量操作中每张表的详细成功/失败报告
- Google Sheets API集成: 使用本机复制到API以实现可靠的工作表复制
翻译操作
# Translate range (preserves formulas and formatting)
godri sheets translate "SPREADSHEET_ID" "A1:C10" "fr" --source-language "en"
# Translate headers
godri sheets translate "SPREADSHEET_ID" "A1:Z1" "es"
# Translate specific sheet range
godri sheets translate "SPREADSHEET_ID" "Sheet1!B2:D20" "de"翻译特点:
- 格式保存:翻译过程中保留所有单元格格式(粗体、颜色等)
- 配方智能:仅转换公式中的字符串文字,保留公式结构
- 智能检测:自动跳过数字、日期和不可翻译的内容
- 范围支持:翻译特定范围或整个图纸区域
格式化操作:
- JSON格式:使用Google表格格式JSON应用自定义格式
- 格式化复制:使用智能平铺将格式从一个范围复制到另一个范围
- 模式复制:单个单元格格式可以复制到更大的范围
谷歌幻灯片操作
创建演示文稿
# Create presentation with default theme (Streamline)
godri slides create-document "Presentation Title" --folder-id "FOLDER_ID"
# Create presentation with specific theme
godri slides create-document "Presentation Title" --theme "CORAL" --folder-id "FOLDER_ID"可用主题:
- SIMPLE_LIGHT、SIMPLE_DARK、流线(默认)、焦点、SHIFT、动量
- 范型,板岩,珊瑚,海滩日,现代作家,留兰香
- 游戏日,蓝色和黄色,瑞士,豪华,码头,森林
主题管理
# Import theme from another presentation
godri slides themes import "TARGET_PRESENTATION_ID" "SOURCE_PRESENTATION_ID"
# Import and automatically apply theme
godri slides themes import "TARGET_PRESENTATION_ID" "SOURCE_PRESENTATION_ID" --set
# Set theme for presentation
godri slides themes set "PRESENTATION_ID" "STREAMLINE"布局操作
# List available slide layouts
godri slides layout list "PRESENTATION_ID"可用布局:
- 空白、仅字幕、标题、标题和正文、标题和两列
- TITLE_ONLY、SECTION_HEADER、SECTION_TITLE_AND_DESCRIPTION
- ONE_COLUMN_TEXT、MAIN POINT、BIG_NUMBER
幻灯片管理
# Add slide with default layout (BLANK)
godri slides add "PRESENTATION_ID"
# Add slide with specific layout
godri slides add "PRESENTATION_ID" --layout "TITLE_AND_BODY"
# Add slide at specific position (0-based)
godri slides add "PRESENTATION_ID" --layout "TITLE" --position 2
# Move slide to new position
godri slides move "PRESENTATION_ID" "SLIDE_ID" 3
# Remove slide
godri slides remove "PRESENTATION_ID" "SLIDE_ID"内容管理
支持幻灯片编号的增强内容列表:
# List content in specific slide by number (user-friendly)
godri slides content list "PRESENTATION_ID" 2
# List content in specific slide by API object ID (for precision)
godri slides content list "PRESENTATION_ID" "SLIDES_API1220751402_0"
# List content in multiple specific slides
godri slides content list "PRESENTATION_ID" 1 2 3
# List content for all slides in presentation
godri slides content list "PRESENTATION_ID" --all
godri slides content list "PRESENTATION_ID" # empty slides list = all slides
# Show detailed formatting and properties
godri slides content list "PRESENTATION_ID" 2 --detailed内容显示功能:
- 文本内容:显示实际文本的格式(粗体、斜体、字体、大小、颜色)
- 大小和位置:EMU单位中的元素尺寸和坐标
- 形状属性:背景颜色、边框、形状类型
- 表内容:逐行表格单元格内容(显示空单元格)
- 图像属性:内容URL和源URL
- 文本格式:字体系列、大小、样式属性
- 详细模式:附加比例因子和高级属性
添加内容:
# Add text content
godri slides content add "PRESENTATION_ID" "SLIDE_ID" text "Hello World" --x 100 --y 100 --width 300 --height 50
# Add text with formatting (similar to sheets formatting)
godri slides content add "PRESENTATION_ID" "SLIDE_ID" text "Bold Title" --format '{"textFormat":{"bold":true,"fontSize":18}}'
# Add image content
godri slides content add "PRESENTATION_ID" "SLIDE_ID" image "https://example.com/image.jpg" --x 200 --y 150 --width 400 --height 300
# Add table content (3 rows x 4 columns)
godri slides content add "PRESENTATION_ID" "SLIDE_ID" table "3x4" --x 50 --y 100 --width 500 --height 200
# Remove content element
godri slides content remove "PRESENTATION_ID" "ELEMENT_ID"
# Move content element
godri slides content move "PRESENTATION_ID" "ELEMENT_ID" 250 300内容格式选项: 幻灯片支持与Google表格类似的格式选项:
# Bold text with blue color
--format '{"textFormat":{"bold":true,"foregroundColor":{"red":0.0,"green":0.0,"blue":1.0}}}'
# Large font with background color
--format '{"textFormat":{"fontSize":24,"fontFamily":"Arial"},"backgroundColor":{"red":0.9,"green":0.9,"blue":1.0}}'
# Combined formatting
--format '{"textFormat":{"bold":true,"italic":true,"fontSize":16,"fontFamily":"Calibri","foregroundColor":{"red":0.2,"green":0.2,"blue":0.8}}}'下载演示文稿
# Download entire presentation as PDF
godri slides download "PRESENTATION_ID" "/path/to/presentation.pdf" pdf
# Download entire presentation as PowerPoint
godri slides download "PRESENTATION_ID" "/path/to/presentation.pptx" pptx
# Download specific slides as PDF (slides 1-3)
godri slides download "PRESENTATION_ID" "/path/to/presentation.pdf" pdf --range "1-3"
# Download selected slides as PDF (slides 1, 3, and 5)
godri slides download "PRESENTATION_ID" "/path/to/presentation.pdf" pdf --range "1,3,5"
# Download multiple ranges as PPTX (slides 2-4 and 6-8)
godri slides download "PRESENTATION_ID" "/path/to/presentation.pptx" pptx --range "2-4,6-8"
# Download all slides as PNG images to directory
godri slides download "PRESENTATION_ID" "/path/to/images/" png
# Download specific slides as JPEG images (slides 1-5)
godri slides download "PRESENTATION_ID" "/path/to/images/" jpeg --range "1-5"下载功能:
- PDF导出: 完整的演示文稿或特定幻灯片作为PDF文档
- PPTX出口: 具有完全保真度的原生PowerPoint格式
- 图像导出: 单个幻灯片为PNG或JPEG文件,文件名有编号
- 范围支持: 灵活的幻灯片选择(范围、单个幻灯片、多个范围)
- 目录创建: 自动创建图像输出目录
- 文件命名: 图像另存为
slide_001.png,slide_002.png等等。
在演示文稿之间复制幻灯片
# Copy single slide from source to target presentation
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" 2
# Copy multiple specific slides
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" 1 3 5
# Copy range of slides (slides 1-3)
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" "1-3"
# Copy complex range (slides 1-3 and slide 5)
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" "1-3,5"
# Copy slides without preserving theme (use target presentation theme)
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" "1-3" --no-preserve-theme
# Copy slides with source linking (maintain connection to source)
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" "2-4" --link-to-source
# Copy slides to specific position in target presentation
godri slides copy "SOURCE_PRESENTATION_ID" "TARGET_PRESENTATION_ID" "1,2" --position 1复制功能:
- 范围支持: 使用范围(1-3)、单个数字(2)或组合(1-3,5)复制幻灯片
- 主题保存: 默认情况下保持原始格式和主题
- 来源链接: 可选链接,以保持与源代码演示文稿的连接
- 位置控制: 将复制的幻灯片插入特定位置或附加到末尾
- 批量操作: 在一次操作中复制多张幻灯片或多个范围
范围格式示例:
"1-3"-幻灯片1至3"1,3,5"-仅幻灯片1、3和5"2-4,6-8"-幻灯片2-4和幻灯片6-8"1,3-5,7"-幻灯片1、幻灯片3-5和幻灯片7
翻译
# Translate text (auto-detect source)
godri translate "Hello, world!" "fr"
# Translate with specified source language
godri translate "Bonjour le monde!" "en" --source-language "fr"高级示例
复杂幻灯片操作
# Create presentation with corporate theme and add structured content
PRES_ID=$(godri slides create-document "Sales Presentation" --theme "LUXE" | grep -o 'ID: [^,]*' | cut -d' ' -f2)
# Add title slide
godri slides add "$PRES_ID" --layout "TITLE" --position 0
TITLE_SLIDE=$(godri slides content list "$PRES_ID" | head -1 | cut -d' ' -f4) # Get first slide ID
# Add content to title slide
godri slides content add "$PRES_ID" "$TITLE_SLIDE" text "Q4 Sales Results" --x 100 --y 150 --width 600 --height 100 --format '{"textFormat":{"bold":true,"fontSize":32,"fontFamily":"Arial"}}'
# Add content slide with data
godri slides add "$PRES_ID" --layout "TITLE_AND_BODY"
CONTENT_SLIDE=$(godri slides content list "$PRES_ID" | tail -1 | cut -d' ' -f4) # Get last slide ID
# Add table with sales data
godri slides content add "$PRES_ID" "$CONTENT_SLIDE" table "4x3" --x 50 --y 200 --width 600 --height 300
# List all content for review
godri slides content list "$PRES_ID" "$TITLE_SLIDE"
godri slides content list "$PRES_ID" "$CONTENT_SLIDE"复杂表格操作
# Create spreadsheet and add data with formulas
SHEET_ID=$(godri sheets create-document "Sales Report" | grep -o 'ID: [^,]*' | cut -d' ' -f2)
godri sheets values set "$SHEET_ID" "A1:C1" "Product,Price,Total"
godri sheets values set "$SHEET_ID" "A2:B3" "Widget,10,Gadget,20"
godri sheets values set "$SHEET_ID" "C2" "B2*2" --formula
godri sheets values set "$SHEET_ID" "C3" "B3*2" --formula
godri sheets values format "$SHEET_ID" "A1:C1" '{"textFormat":{"bold":true}}'
# Translate to multiple languages
godri sheets translate "$SHEET_ID" "A1:A3" "fr" # Translate product names to French
godri sheets translate "$SHEET_ID" "A1:C1" "es" # Translate headers to Spanish翻译工作流程
# Translate Google Doc to French
godri docs translate "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms" "fr"
# Translate specific range in spreadsheet
godri sheets translate "1n0lrRoYg6KW7uoyGuawe88XSY5o5dF9dkwAFCmnregs" "A1:C10" "de" --source-language "en"
# Translate document section (characters 100-500)
godri docs translate "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms" "es" --start-index 100 --end-index 500批处理文件操作
# Upload multiple files to same folder
for file in *.txt; do
godri drive upload "$file" --folder-id "FOLDER_ID"
doneMCP(模型上下文协议)服务器
Godri包括一个MCP服务器,为AI助手和其他应用程序提供Google Workspace集成。
启动MCP服务器
# Start MCP server with stdio transport (for Claude Desktop and other MCP clients)
godri mcp --transport stdio
# Start MCP server with HTTP transport (for web applications)
godri mcp --transport http --host localhost --port 8000可用的MCP工具
增强的幻灯片内容工具:
slides_content_list(presentation_id, slide_identifiers="", all_slides=False)-在幻灯片中列出具有增强格式信息的详细内容
- 支持幻灯片编号(1、2、3)、API对象ID或范围(1-3,5) - 集 all_slides=True 列出所有幻灯片的内容 - 返回详细的文本内容、格式、大小、位置和属性
复制工具:
slides_copy(source_presentation_id, target_presentation_id, slide_identifiers, preserve_theme=True, link_to_source=False, target_position=-1)-在演示文稿之间复制幻灯片
- 支持“1-3.5”或单个幻灯片“2”等范围 - 可选主题保存和源链接 - 位置-1添加到末尾,或指定目标位置
sheets_copy(source_spreadsheet_id, target_spreadsheet_id, sheet_names, target_name="", preserve_formatting=True)-在电子表格之间复制表格
- 多张图纸副本的逗号分隔图纸名称 - 单张工作表的可选自定义目标名称 - 使用冲突处理进行格式保存
驱动工具:
drive_search(query, name, mime_type, limit)-搜索文件和文件夹drive_upload(file_path, folder_id, name)-上传文件drive_download(file_id, output_path, smart)-通过智能转换下载文件drive_folder_create(name, parent_id)-创建文件夹drive_folder_delete(file_id)-删除文件/文件夹
文档工具:
docs_createdocument(title, folder_id, content, markdown)-创建文档docs_read(document_id, plain_text)-读取文档内容docs_update(document_id, content, markdown, replace, index)-更新文档docs_translate(document_id, target_language, source_language, start_index, end_index)-翻译文档
图纸工具:
sheets_createdocument(title, folder_id)-创建电子表格sheets_read(spreadsheet_id)-列表表sheets_values_read(spreadsheet_id, sheet_name, range_name)-读取数据sheets_values_set(spreadsheet_id, range_name, values, formula)-设置值sheets_translate(spreadsheet_id, range_name, target_language, source_language)-翻译范围
幻灯片工具:
slides_createdocument(title, folder_id, theme)-创建演示文稿slides_download(presentation_id, format_type, output_path)-下载演示文稿slides_add(presentation_id, layout, position)-添加幻灯片slides_content_add(presentation_id, slide_id, content_type, content, x, y, width, height)-添加内容
翻译工具:
translate_text(text, target_language, source_language)-翻译文本
MCP配置
MCP服务器自动使用与CLI相同的身份验证。确保你已经跑过了 godri auth 在启动MCP服务器之前。
发展
项目结构
godri/
├── src/godri/
│ ├── main.py # CLI entry point with hierarchical commands
│ ├── config/
│ │ └── logging_config.py # Logging configuration
│ └── services/
│ ├── auth_service.py # OAuth2 authentication
│ ├── drive_service.py # Google Drive operations
│ ├── docs_service.py # Google Docs with markdown support
│ ├── sheets_service.py # Google Sheets comprehensive operations
│ ├── slides_service.py # Google Slides comprehensive operations
│ └── translate_service.py # Translation service
├── pyproject.toml # UV dependency configuration
└── README.md代码质量
# Format code (required before commits)
black -l 120 src/
# Run application
godri 常见MIME类型
| 文件类型 | MIME类型 |
|---|---|
| 谷歌文档 | application/vnd.google-apps.document |
| 谷歌表格 | application/vnd.google-apps.spreadsheet |
| 谷歌幻灯片 | application/vnd.google-apps.presentation |
| 谷歌文件夹 | application/vnd.google-apps.folder |
application/pdf | |
| 文本 | text/plain |
| Word | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
错误处理和调试
- 使用
--verbose详细日志记录标志 - 存储在中的身份验证令牌
~/.godri-token.json - 全面的错误信息和可操作的指导
- 暂时API错误的自动重试逻辑
安全
- OAuth2令牌安全地存储在用户主目录中
- 客户端机密文件不应提交到版本控制
- 所有API通信都使用HTTPS
- 令牌过期时自动刷新
支持
对于问题、功能请求或疑问:
- 查看命令帮助:
godri --help - 启用详细日志记录:
godri --verbose - 在Google云控制台中验证API配额
- 确保启用了所有必需的API
与AI助手集成
Claude代码集成
您可以将Godri与Claude Code集成,使AI助手能够访问您的Google Workspace文档和数据。
选项1:MCP服务器集成(推荐)
- 将Godri安装为软件包:
git clone https://github.com/sebastienmorand-loreal/godri.git
cd godri
uv install .- 设置身份验证:
export GODRI_CLIENT_FILE="/path/to/your/client_secret.json"
godri auth- 配置Claude Code以使用MCP服务器:
添加到您的Claude代码配置中(~/.claude/mcp_servers.json):
{
"godri": {
"command": "godri",
"args": ["mcp", "stdio"]
}
}- 开始在Claude中使用Godri工具:
配置后,Claude Code将可以访问所有Godri MCP工具:
- 驱动操作(搜索、上传、下载、智能转换) - 文档操作(创建、读取、更新、翻译) - 电子表格操作(创建、读取表格、管理值、格式化、翻译) - 演示操作(创建、添加幻灯片、管理内容、下载、复制) - 翻译服务
方案2:开发模式整合
对于开发,或者如果您更喜欢从源代码运行:
- 克隆此存储库:
git clone https://github.com/sebastienmorand-loreal/godri.git
cd godri
uv sync
uv install -e . # Install in editable mode- 设置身份验证:
export GODRI_CLIENT_FILE="/path/to/your/client_secret.json"
godri auth- 配置克劳德代码(与选项1相同):
添加到您的Claude代码配置中(~/.claude/mcp_servers.json):
{
"godri": {
"command": "godri",
"args": ["mcp", "stdio"]
}
}- 使用克劳德代码:
- 在Claude Code中打开存储库进行开发 - Claude可以阅读您的代码并帮助开发 - 使用Claude运行以下命令: godri drive search --name "document"
设置验证
要验证您的安装是否正常工作:
- 测试CLI访问:
godri --help
godri drive search --name "test" --limit 5- 测试MCP服务器:
godri mcp stdio
# Should start the MCP server and wait for input- 重新启动Claude代码 在添加MCP配置以加载新工具之后。
Gemini CLI集成
Godri可以与谷歌的Gemini CLI集成,以增强基于人工智能的文档分析。
Gemini CLI的设置
- 安装Gemini CLI:
pip install google-generativeai- 创建包装脚本 (
gemini-godri.py):
#!/usr/bin/env python3
import subprocess
import sys
import json
def run_godri_command(args):
"""Run godri command and return results"""
try:
result = subprocess.run(
['godri'] + args,
capture_output=True,
text=True
)
return result.stdout
except Exception as e:
return f"Error: {e}"
# Example: Search and analyze documents
if __name__ == "__main__":
if len(sys.argv) > 1 and sys.argv[1] == "analyze-docs":
# Search for documents
docs = run_godri_command(['drive', 'search', '--name', sys.argv[2], '--limit', '10'])
print(f"Found documents: {docs}")
# Use Gemini to analyze document content
# Add your Gemini analysis logic here- 使用示例:
# Search and analyze documents
python gemini-godri.py analyze-docs "quarterly report"
# Translate documents with AI assistance
python gemini-godri.py translate-with-ai "document_id" "target_language"高级Gemini集成
为常见工作流创建专用脚本:
- 文档分析脚本:
# Use godri to read documents, Gemini to analyze content
doc_content = run_godri_command(['docs', 'read', document_id, '--plain-text'])
# Send to Gemini for analysis- 智能翻译:
# Use godri to read, Gemini to improve translation, godri to update
original = run_godri_command(['docs', 'read', document_id])
# Gemini analysis for context-aware translation
# Update with godri- 智能电子表格分析:
# Use godri to read spreadsheet data
data = run_godri_command(['sheets', 'values', 'read', spreadsheet_id, '--json'])
# Use Gemini for data analysis and insightsAI集成的好处
- 文档智能: AI可以分析文档内容并提出改进建议
- 智能搜索: 使用自然语言在Google云端硬盘中查找文档
- 自动翻译: 保留格式的上下文感知翻译
- 数据分析: 电子表格数据和演示内容的智能分析
- 工作流自动化: 将godri运营与人工智能决策相结合
安全注意事项
- MCP服务器继承了与CLI相同的OAuth2身份验证
- 所有Google API通信保持安全(HTTPS)
- AI助手只能访问您明确启用的工具
- 考虑对敏感文档使用只读操作
许可证
个人/教育用途。确保遵守Google API服务条款。
