用今天的日期重命名一个标签,并“ mm/dd/yyyy”然后是“ mm/dd/yyyy-1”的另一个

发布于 2025-02-12 17:44:05 字数 560 浏览 1 评论 0 原文

我得到了一个创建一个新标签的脚本,并将名称更改为今天的日期。但是,如果A再次运行脚本,则显示错误BC,TABS名称已经存在。无论如何,我可以在今天的日期和其余的“ - 1”或“ - 2”中重命名。目前,这就是我只创建一个新标签并将名称更改为今天的,

function changeDate() { //Add sheet and name with todays date
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1:AO102').activate();
  spreadsheet.insertSheet(1);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tz = ss.getSpreadsheetTimeZone();
  var sheets = ss.getSheets();
  var date = Utilities.formatDate(new Date(), tz, 'MM-dd-yyyy');
  sheets[1].setName(date);

i got a script that create a new tab and changes the name to today's date. But if a run the script again, shows up an error bc the tabs name already exist. Anyway I can rename the first with today date and the rest with a "- 1" or "- 2". This is what I have at the moment that just create a new tab and changes the name to today's,

function changeDate() { //Add sheet and name with todays date
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1:AO102').activate();
  spreadsheet.insertSheet(1);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tz = ss.getSpreadsheetTimeZone();
  var sheets = ss.getSheets();
  var date = Utilities.formatDate(new Date(), tz, 'MM-dd-yyyy');
  sheets[1].setName(date);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

焚却相思 2025-02-19 17:44:05

您可以使用递归尝试...捕获循环到 setName()

替换

sheets[1].setName(date);

const tcloop = ((i) => (func) => {
  try {
    func(i);
  } catch (e) {
    ++i;
    tcloop(func);
  }
})(0);
tcloop((i)=>sheets[1].setName(`${date}${i > 0 ? -i : ""}`))

You can use a recursive try...catch loop to setName().

Replace

sheets[1].setName(date);

with

const tcloop = ((i) => (func) => {
  try {
    func(i);
  } catch (e) {
    ++i;
    tcloop(func);
  }
})(0);
tcloop((i)=>sheets[1].setName(`${date}${i > 0 ? -i : ""}`))
短叹 2025-02-19 17:44:05

Description

这是一个示例脚本的示例脚本,即如何用后缀号码重命名表格,以避免重命名已经存在的名称。

code.gs

function insertSheet() {
  try {
    let ss = SpreadsheetApp.getActiveSpreadsheet();
    let tz = ss.getSpreadsheetTimeZone();
    let name = Utilities.formatDate(new Date(), tz, 'MM-dd-yyyy');
    let sheets = ss.getSheets();
    // get sheets that include today's date at the start of the name
    sheets = sheets.filter( sheet => sheet.getName().indexOf(name) === 0 );
    if( sheets.length > 0 ) {
      let min = 0;
      // get the lowest number suffix (i.e. -3, -2, -1)
      sheets.forEach( sheet => {
          let i = parseInt(sheet.getName().slice(name.length));
          min = i < min ? i : min;
        }
      );
      // now rename starting from lowest number (i.e. -3)
      while( min < 1 ) {
        let rename = min === 0 ? name : name+min;
        let sheet = ss.getSheetByName(rename);
        if( sheet ) {
          sheet.setName(name+(min-1));
        }
        min++;
      }
    }
    let sheet = ss.insertSheet(1);
    sheet.setName(name);
  }
  catch(err) {
    console.log(err);
  }
}

参考

  • string.indexof(
  • ) jsref/jsref_foreach.asp“ rel =” nofollow noreferrer“> array.foreach()
  • noreflow一个href =“ https://www.w3schools.com/jsref/jsref_parseint.asp” rel =“ nofollow noreferrer”> parseint()

Description

Here is an example script of how to rename sheets with a suffix number that avoids renaming a sheet with a name that already exists.

Code.gs

function insertSheet() {
  try {
    let ss = SpreadsheetApp.getActiveSpreadsheet();
    let tz = ss.getSpreadsheetTimeZone();
    let name = Utilities.formatDate(new Date(), tz, 'MM-dd-yyyy');
    let sheets = ss.getSheets();
    // get sheets that include today's date at the start of the name
    sheets = sheets.filter( sheet => sheet.getName().indexOf(name) === 0 );
    if( sheets.length > 0 ) {
      let min = 0;
      // get the lowest number suffix (i.e. -3, -2, -1)
      sheets.forEach( sheet => {
          let i = parseInt(sheet.getName().slice(name.length));
          min = i < min ? i : min;
        }
      );
      // now rename starting from lowest number (i.e. -3)
      while( min < 1 ) {
        let rename = min === 0 ? name : name+min;
        let sheet = ss.getSheetByName(rename);
        if( sheet ) {
          sheet.setName(name+(min-1));
        }
        min++;
      }
    }
    let sheet = ss.insertSheet(1);
    sheet.setName(name);
  }
  catch(err) {
    console.log(err);
  }
}

References

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文