You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GAS向Google Drive上传文件时如何保留历史版本而非生成多份副本

实现方法

你当前调用files.create接口的逻辑是每次上传都创建全新的独立文件,要实现和Drive UI操作一致的「保留同一文件、留存历史版本」效果,需要先判断目标路径下是否存在同名文件,存在则调用files.update接口覆盖内容即可,Google Drive会自动为文件生成新的历史版本,不会生成副本。

完整调整后代码示例:

# 1. 先查询目标文件夹下是否已有未被删除的同名文件
response = service.files().list(
    q=f"name = '{remotefilename}' and '{folderId}' in parents and trashed = false",
    spaces='drive',
    fields='files(id)'
).execute()
existing_files = response.get('files', [])

# 2. 初始化上传对象
media = MediaFileUpload(
    filename,
    mimetype=mimetype,
    resumable=True
)

# 3. 判断走更新还是新建逻辑
if existing_files:
    # 已有同名文件,调用update更新内容,自动留存历史版本
    file_id = existing_files[0]['id']
    request = service.files().update(
        fileId=file_id,
        media_body=media
    )
else:
    # 无同名文件,走原有新建逻辑
    request = service.files().create(
        media_body=media,
        body={'name': remotefilename, 'parents': [folderId]}
    )

注意事项

  • Google Drive默认会保留文件最近100个版本或30天内的所有版本,超出限制的旧版本会被自动清理。如果需要永久保留指定版本,可以调用revisions.update接口将对应版本的keepForever参数设置为True
  • 如果你需要同步本地文件的修改时间等元数据到Drive,可以在files.update的请求参数中添加body字段传入对应的元数据配置

内容的提问来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:06:03