Javascript 自动日期复制选项卡

Javascript 自动日期复制选项卡,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,首先,我知道一点Javascript,但我不知道从哪里开始。我做了很多搜索,但没有找到任何接近我想要的。我在google sheets中有一个每日任务列表,当我右键单击并选择“复制”时,我想用下一天的日期复制每个工作表。这可能吗?可以用另一种方法吗 无法更改上下文菜单的“复制”项的功能。但是可以使用以下脚本通过菜单提供另一种复制方式。每次打开电子表格时,它都会添加一个新的菜单项“Custom>new Day”。如果名称遵循ISO格式yyyy-mm-dd,调用此项将复制当前图纸,并以递增的日期作为

首先,我知道一点Javascript,但我不知道从哪里开始。我做了很多搜索,但没有找到任何接近我想要的。我在google sheets中有一个每日任务列表,当我右键单击并选择“复制”时,我想用下一天的日期复制每个工作表。这可能吗?可以用另一种方法吗

无法更改上下文菜单的“复制”项的功能。但是可以使用以下脚本通过菜单提供另一种复制方式。每次打开电子表格时,它都会添加一个新的菜单项“Custom>new Day”。如果名称遵循ISO格式yyyy-mm-dd,调用此项将复制当前图纸,并以递增的日期作为名称

一般参考:


+'T00:00:00.000Z'
的位之所以存在,是因为Google Apps脚本中日期解析的实现非常特殊:它需要时间组件,包括毫秒。

无法更改上下文菜单的“复制”项的功能。但是可以使用以下脚本通过菜单提供另一种复制方式。每次打开电子表格时,它都会添加一个新的菜单项“Custom>new Day”。如果名称遵循ISO格式yyyy-mm-dd,调用此项将复制当前图纸,并以递增的日期作为名称

一般参考:

+'T00:00:00.000Z'
的位,因为Google Apps脚本中日期解析的实现是特殊的:它需要时间组件,包括毫秒

function duplicate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var sheetDate = new Date(sheet.getName() + 'T00:00:00.000Z');
  if (!sheetDate.valueOf()) {
    Browser.msgBox('Did not recognize "' + sheet.getName() + '" as a date. Use the format yyyy-mm-dd.');
  }
  else {
    sheetDate.setDate(sheetDate.getDate() + 1);
    var newSheetName = sheetDate.toISOString().slice(0,10);
    ss.insertSheet(newSheetName, {template: sheet});
  }
}

function onOpen() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu("Custom", [{name: "New Day",  functionName: "duplicate"}]);
}