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

如何用Google Apps Script导出特定日期的Google Sheets历史版本

修改后的Google Apps Script:获取指定日期的Sheet历史版本并生成新文件

针对你的需求,我对原脚本做了两处核心修改:

  • 自动查找2022年12月31日的历史版本,无需手动填写revision ID
  • 生成全新的Google Sheet文件,完全不覆盖原文件

修改后的完整脚本

function getHistoricalVersionAsNewFile() {
  // 配置参数
  const targetDate = new Date("2022-12-31"); // 指定要获取的日期
  const originalFileId = "###"; // 替换为你的Google Sheet文件ID
  const timeZone = "Asia/Shanghai"; // 根据你的时区调整,比如"America/New_York"

  // 获取原文件的所有版本记录
  const revisions = Drive.Revisions.list(originalFileId, { maxResults: 1000 });
  if (!revisions.items) {
    Logger.log("未找到该文件的版本记录");
    return;
  }

  // 筛选出目标日期的最新版本(当天可能有多个版本,取最后一个)
  let targetRevision = null;
  const targetDateStr = Utilities.formatDate(targetDate, timeZone, "yyyy-MM-dd");
  for (let i = revisions.items.length - 1; i >= 0; i--) {
    const revision = revisions.items[i];
    const revisionDateStr = Utilities.formatDate(
      new Date(revision.modifiedDate),
      timeZone,
      "yyyy-MM-dd"
    );
    if (revisionDateStr === targetDateStr) {
      targetRevision = revision;
      break;
    }
  }

  if (!targetRevision) {
    Logger.log("未找到2022年12月31日的版本记录");
    return;
  }

  // 获取该版本的导出链接
  const endpoints = Drive.Revisions.get(originalFileId, targetRevision.id).exportLinks;
  const keys = Object.keys(endpoints);
  let excelBlob = null;
  for (let i = 0; i < keys.length; i++) {
    // 匹配Excel格式的导出链接(用于转换为Google Sheet)
    if (keys[i].indexOf("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") > -1) {
      const endpoint = endpoints[keys[i]] + "&access_token=" + ScriptApp.getOAuthToken();
      excelBlob = UrlFetchApp.fetch(endpoint).getBlob();
      break;
    }
  }

  if (!excelBlob) {
    Logger.log("无法获取该版本的导出数据");
    return;
  }

  // 获取原文件信息,用于命名新文件
  const originalFile = Drive.Files.get(originalFileId);
  const newFileName = `${originalFile.title} - 2022-12-31版本`;

  // 创建新的Google Sheet文件(不覆盖原文件)
  const newFile = Drive.Files.insert(
    {
      title: newFileName,
      mimeType: "application/vnd.google-apps.spreadsheet" // 指定为Google Sheet格式
    },
    excelBlob
  );

  Logger.log(`新文件已创建,ID:${newFile.id},名称:${newFileName}`);
}

使用步骤

  1. 打开你的目标Google Sheet,点击顶部菜单栏的「工具」→「脚本编辑器」
  2. 删除编辑器里的默认代码,粘贴上面的完整脚本
  3. 替换脚本中的originalFileId:复制原Sheet URL中d/和/edit之间的字符串
  4. (可选)调整timeZone参数,确保日期匹配准确
  5. 点击编辑器顶部的运行按钮,第一次运行会要求授权,按提示完成权限验证
  6. 运行成功后,新的历史版本文件会出现在你的Google Drive根目录

关键修改说明

  • 自动匹配日期:遍历文件所有版本,通过日期格式化筛选出2022-12-31的最新版本,无需手动查找revision ID
  • 生成新文件:用Drive.Files.insert替代原脚本的Drive.Files.update,直接创建新文件,完全不影响原文件
  • 格式转换:先导出为Excel格式,再转换为Google Sheet,保证新文件的格式兼容性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:07:38