Google Sheet 复制母版的脚本 Sheet 并重命名

Google Sheet Script to Duplicate Master Sheet & Rename

我正在尝试自动复制主控 sheet 并同时将当前主控 sheet 重命名为当前日期。

进程:

  1. 假设大师 Sheet 是根据昨天的日期“2022 年 4 月 18 日”命名的
  2. 复制 Master Sheet 并在复制后将其重命名为当前日期“04/19/2022”
  3. 重命名重复的 sheet 以删除“Copy of”

非常感谢帮助

每天从昨天的大师那里复制一份

function dupsht() {
  const ss = SpreadsheetApp.getActive();
  const dt = new Date();//today
  const ydt = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() - 1);//yesterday
  const sh = ss.getSheetByName(Utilities.formatDate(ydt,Session.getScriptTimeZone(),"MM/dd/yyyy"));
  ss.insertSheet(Utilities.formatDate(dt,Session.getScriptTimeZone(),"MM/dd/yyyy"),{template:sh})
}

尝试

function duplicateTemplate() {
  var today = new Date();
  var yesterday = new Date();
  yesterday.setDate(today.getDate() - 1)
  var d0 = Utilities.formatDate(yesterday, Session.getScriptTimeZone(), "MM/dd/yyyy");
  var d1 = Utilities.formatDate(today, Session.getScriptTimeZone(), "MM/dd/yyyy");
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName(d0).activate()
  SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(d1)
};

注意脚本编辑器中的时区。如果需要更改,请单击脚本编辑器左侧的齿轮,选中第三个框,返回脚本编辑器并 select appsscript.json。根据需要进行更改。

编辑:如果“昨天的sheet”不存在,此脚本将尝试查找上周的最新

function duplicateTemplate() {
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const today = new Date();
  const d1 = Utilities.formatDate(today, Session.getScriptTimeZone(), "MM/dd/yyyy");
  let previousDay = new Date();
  let n = 1
  while (n <= 7) {
    previousDay.setDate(today.getDate() - n++)
    let d0 = Utilities.formatDate(previousDay, Session.getScriptTimeZone(), "MM/dd/yyyy");
    var sh = ss.getSheetByName(d0)
    if (sh != null) {
      sh.activate()
      ss.duplicateActiveSheet().setName(d1)
      break
    }
  }
};