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

如何使用Apps Script为复制的表格命名(固定文本+日期)

解决Google Sheets每日报表快照命名含当日日期的问题

问题分析

你当前的脚本已实现复制主表、粘贴数值,但在命名新表时无法追加当日日期。核心问题是缺少日期格式化与拼接逻辑,同时录制宏生成的代码存在冗余激活操作,可进一步优化。

修改后的完整代码

function createDailySnapshot() {
  const spreadsheet = SpreadsheetApp.getActive();
  const mainSheetName = 'SY 2022/23 IR: Track & Field (Auto;DNE)';
  const mainSheet = spreadsheet.getSheetByName(mainSheetName);
  
  // 复制主表
  const newSheet = mainSheet.copyTo(spreadsheet);
  
  // 仅粘贴数值(清除公式,保留纯值)
  const range = newSheet.getDataRange();
  range.copyTo(range, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  
  // 格式化当日日期(格式:MM/dd/yyyy,可根据需求调整)
  const today = new Date();
  const timeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
  const formattedDate = Utilities.formatDate(today, timeZone, 'MM/dd/yyyy');
  
  // 重命名新表:固定文本 + 当日日期
  newSheet.setName(`Track & Field IR ${formattedDate}`);
}

关键修改说明

  • 日期格式化:使用Utilities.formatDate()根据表格时区生成指定格式的日期,避免时区偏差;格式字符串'MM/dd/yyyy'对应1/23/2023样式,若需其他格式可调整(如'yyyy-MM-dd'对应2023-01-23)。
  • 简化冗余操作:移除录制宏生成的多次activate()调用,直接通过Sheet对象操作,提升脚本执行效率。
  • 明确变量命名:用mainSheet、newSheet等变量替代重复的spreadsheet.getActiveSheet(),代码更易读维护。

使用提示

  1. 替换原test函数为上述createDailySnapshot函数。
  2. 若需要调整日期格式,修改Utilities.formatDate的第三个参数即可。
  3. 可通过Google Sheets的「触发器」功能设置每日自动执行该脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:35:20