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

Google Sheets每日复制工作表并保留格式问题求助

解决Google Sheets指定区域带格式复制到日期命名新工作表的问题

录制宏默认仅复制数值,无法完整迁移格式,直接用Google Apps Script可以精准实现需求。以下是完整的实现方案:

function copyRangeWithFormat() {
  // 获取当前电子表格
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 替换成你的源工作表名称,比如"原始数据"
  const sourceSheet = ss.getSheetByName("原始数据");
  if (!sourceSheet) {
    SpreadsheetApp.getUi().alert("未找到指定源工作表,请检查名称");
    return;
  }
  
  // 生成当日日期作为新表名称,格式为yyyy-MM-dd,可按需修改
  const today = new Date();
  const sheetName = Utilities.formatDate(today, "GMT+8", "yyyy-MM-dd");
  
  // 检查是否已存在当日工作表,避免重复创建
  let targetSheet = ss.getSheetByName(sheetName);
  if (targetSheet) {
    SpreadsheetApp.getUi().alert("今日已存在同名工作表,操作终止");
    return;
  }
  targetSheet = ss.insertSheet(sheetName);
  
  // 复制源区域A1:G34到新表A1,包含所有格式、公式、条件格式等
  const sourceRange = sourceSheet.getRange("A1:G34");
  sourceRange.copyTo(targetSheet.getRange("A1"), SpreadsheetApp.CopyPasteType.PASTE_ALL, false);
}

使用步骤:

  1. 打开目标Google Sheets,点击顶部菜单「扩展程序」→「Apps 脚本」
  2. 删除默认代码,粘贴上述脚本,修改getSheetByName中的源表名称为实际名称
  3. 点击保存,给脚本命名(比如"CopyWithFullFormat")
  4. 点击运行,首次运行需完成权限授权,按提示操作即可
  5. 运行后会自动生成当日日期命名的新工作表,格式与源区域完全一致

可选调整:

  • 若需要覆盖已存在的当日工作表,可删除if (targetSheet)的提示代码,添加ss.deleteSheet(targetSheet)后再创建新表
  • 修改Utilities.formatDate的第三个参数可调整日期格式,比如改成"MM/dd/yyyy"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:51:34