如何通过Apps Script重命名每日自动执行脚本对应的电子表格
嗨,这个需求完全可以通过Google Apps Script轻松实现,我给你整理了完整的解决方案,包括代码和关键细节说明:
实现方案
核心思路
- 生成符合
yyyy-MM-dd格式的当日日期字符串 - 处理电子表格原名称:移除可能已存在的旧日期后缀,避免名称重复冗余
- 更新电子表格名称为「基础名称 + 当日日期」
- 创建对应日期的工作表(额外做了重复检查,避免重复创建)
完整代码
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
相关产品推荐
相关产品推荐

