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

如何通过Apps Script重命名每日自动执行脚本对应的电子表格

嗨,这个需求完全可以通过Google Apps Script轻松实现,我给你整理了完整的解决方案,包括代码和关键细节说明:

实现方案

核心思路

  1. 生成符合yyyy-MM-dd格式的当日日期字符串
  2. 处理电子表格原名称:移除可能已存在的旧日期后缀,避免名称重复冗余
  3. 更新电子表格名称为「基础名称 + 当日日期」
  4. 创建对应日期的工作表(额外做了重复检查,避免重复创建)

完整代码

function createDailySheetAndRenameSpreadsheet() {
  // 获取当前操作的电子表格实例
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  
  // 1. 生成yyyy-MM-dd格式的当日日期
  const today = new Date();
  // 使用脚本时区格式化日期,也可以替换为具体时区如"Asia/Shanghai"
  const formattedDate = Utilities.formatDate(today, Session.getScriptTimeZone(), "yyyy-MM-dd");
  
  // 2. 清理原名称中的旧日期后缀
  const originalName = ss.getName();
  // 正则匹配末尾的" 年-月-日"格式,移除后得到基础名称
  const baseName = originalName.replace(/\s+\d{4}-\d{2}-\d{2}$/, "");
  
  // 3. 设置新的电子表格名称
  const newSpreadsheetName = `${baseName} ${formattedDate}`;
  ss.setName(newSpreadsheetName);
  
  // 4. 创建当日工作表(先检查是否已存在)
  const existingSheet = ss.getSheetByName(formattedDate);
  if (!existingSheet) {
    ss.insertSheet(formattedDate);
    Logger.log(`成功创建工作表:${formattedDate},并更新表格名称为:${newSpreadsheetName}`);
  } else {
    Logger.log(`工作表${formattedDate}已存在,仅更新表格名称为:${newSpreadsheetName}`);
  }
}

关键细节说明

  • 时区处理:Session.getScriptTimeZone()会使用你脚本设置的时区来生成日期,如果你需要固定时区,可以直接替换成类似"Asia/Shanghai"这样的时区字符串。
  • 名称去重:用正则表达式/\s+\d{4}-\d{2}-\d{2}$/匹配并移除末尾的日期后缀,确保不管之前有没有修改过名称,最终的新名称都是「基础名+当日日期」的格式,不会出现MY_SPREAD_SHEET 2018-03-20 2018-03-21这种冗余情况。
  • 避免重复创建工作表:先检查是否已存在同名工作表,再决定是否创建,让脚本更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:57:07