Google Drive 文档上传工具
概述
这是一个集成在 VS Code 中的 Google Drive 文件上传工具,支持一键上传文件到指定的 Google Drive 文件夹,特别优化了 Markdown 文件的处理。
主要特性
核心功能
- 一键上传 - VS Code 任务集成,右键即可上传当前文件
- Markdown 转 PDF - 自动将 Markdown 转换为 PDF,完美支持中文
- 图片嵌入 - 自动将 Markdown 中引用的本地图片嵌入 PDF
- 智能命名 - 按照配置的模板自动重命名文件
- 文件覆盖 - 同名文件自动覆盖,避免重复
- 多文件夹支持 - 可配置多个上传目标,动态选择
文件命名模板
默认模板:Q{quarter}'
-Slots-{fileName}-程序`
变量说明:
{quarter}
- 当前季度(1-4){year}
- 年份后两位(如 25 代表 2025){fileName}
- 原始文件名(不含扩展名)
示例:
- 输入:
组内程序会.md
- 输出:
Q3'25-Slots-组内程序会-程序.pdf
快速使用
方法一:VS Code 任务
- 打开要上传的文件
- 按
Cmd+Shift+P
(Mac) 或Ctrl+Shift+P
(Windows) - 选择
Tasks: Run Task
- 选择
upload_to_google_drive
- 如有多个文件夹,选择目标文件夹
- 等待上传完成
方法二:命令行
bash
# 上传 Markdown 文件(会转换为 PDF)
node .vscode/google_drive/upload-task.js your-file.md
# 直接上传其他文件
node .vscode/google_drive/upload-task.js your-file.zip
初始设置
1. 获取 Google API 凭据
- 访问 Google Cloud Console
- 创建新项目或选择现有项目
- 启用 Google Drive API:
- 在左侧菜单选择"API 和服务" > "库"
- 搜索 "Google Drive API"
- 点击启用
- 创建凭据:
- 选择"API 和服务" > "凭据"
- 点击"创建凭据" > "OAuth 客户端 ID"
- 应用类型选择"桌面应用"
- 输入名称(如 "VS Code Upload")
- 下载凭据 JSON 文件
- 重命名为
credentials.json
并保存到.vscode/google_drive/
目录
2. 配置文件说明
首次运行任务时会自动创建 uploadConfig.json
,格式如下:
json
{
"folders": {
"文件夹名称1": "Google Drive 文件夹 ID",
"文件夹名称2": "Google Drive 文件夹 ID"
},
"fileNameTemplate": {
"enabled": true,
"template": "Q{quarter}'`{year}-Slots-{fileName}-程序",
"useOriginalExtension": true,
"quarterMap": {
"1": "Q1", "2": "Q1", "3": "Q1",
"4": "Q2", "5": "Q2", "6": "Q2",
"7": "Q3", "8": "Q3", "9": "Q3",
"10": "Q4", "11": "Q4", "12": "Q4"
}
}
}
3. 获取 Google Drive 文件夹 ID
- 在浏览器打开目标 Google Drive 文件夹
- 查看地址栏 URL:
https://drive.google.com/drive/folders/[文件夹ID]
- 复制最后一部分作为文件夹 ID
文件处理规则
Markdown 文件 (.md, .markdown)
- 自动转换为 PDF
- 嵌入所有引用的本地图片
- 优化中文显示和换行
- 应用专业的排版样式
其他文件
- 直接上传原始文件
- 支持所有常见文件格式
高级配置
添加新的文件夹
编辑 uploadConfig.json
:
json
"folders": {
"现有文件夹": "xxx",
"新文件夹": "新的文件夹ID"
}
自定义命名模板
修改 uploadConfig.json
中的 template
:
json
"template": "自定义-{year}-{fileName}"
禁用文件重命名
设置 enabled
为 false
:
json
"fileNameTemplate": {
"enabled": false
}
故障排除
常见问题
Q: 首次运行提示缺少凭据文件 A: 按照上述步骤获取 Google API 凭据
Q: 上传时提示未配置文件夹 ID A: 编辑 uploadConfig.json
,将占位符替换为实际的文件夹 ID
Q: PDF 转换失败 A: 确保系统安装了 Chrome、Edge 或 Brave 浏览器
Q: 认证失败或 token 过期 A: 删除 token.json
文件后重新运行,会自动重新认证
Q: 中文显示乱码 A: 已优化中文支持,如仍有问题请检查原始 Markdown 文件编码(应为 UTF-8)
重置配置
如需重新配置,删除以下文件:
uploadConfig.json
- 重置文件夹配置token.json
- 重置认证credentials.json
- 需要重新下载凭据
技术实现
文件结构
.vscode/google_drive/
├── README.md # 详细文档
├── upload-task.js # VS Code 任务入口
├── upload-markdown-with-images.js # Markdown 处理核心
├── upload-to-drive-auto.js # 通用文件上传
├── upload-with-selection.js # 带文件夹选择的上传
├── common.js # 公共模块
├── uploadConfig.json # 用户配置(gitignore)
├── credentials.json # Google API 凭据(gitignore)
└── token.json # OAuth token(gitignore)
主要依赖
googleapis
- Google API 客户端marked
- Markdown 解析puppeteer-core
- PDF 生成(使用系统 Chrome)
安全性
- 使用 OAuth 2.0 认证
- Token 自动刷新
- 敏感文件已添加到 .gitignore