我可以使用脚本在Google Sheets中复制并重命名以当前数据为选项卡名称的工作表吗



我有一个每周更新的数据表。我想要一个脚本来复制工作表并用当前日期重命名它。目标是在工作表更新之前每周将数据保存在工作表中,这样我就有了数据记录。这是我目前为止的脚本:

/** @OnlyCurrentDoc */function myFunction() {
let sh, temp_one_values;
sh = SpreadsheetApp.getActive();
temp_one_values = transpose_(sh.getSheetByName('Complete Tutoring Roster').getRange('A1:Z1000').getValues());
{temp_one.copyTo(sh).setName(szToday);

}
}
function transpose_(array) {
return Object.keys(array[0]).map(function (col) {
return array.map(function (row) {
return row[col];
});
});
}
function CopyDataSheet() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.duplicateActiveSheet();
spreadsheet.getActiveSheet().setName('11/19/2020');
};

我用录制一个宏来获取脚本。

我知道我需要编辑setName代码。但我不知道如何对其进行编码以提取当前日期。

说明:

  • 您只需要以所需格式获得今天的日期:MM/dd/yyyy:

    const today = Utilities.formatDate(new Date(), spreadsheet.getSpreadsheetTimeZone(), "MM/dd/yyyy");
    
  • 然后使用copyTo(电子表格(方法将表格复制到现有的电子表格中,然后用今天的日期命名:

    sheet.copyTo(spreadsheet).setName(today);
    
  • 您不需要激活范围或工作表。这是一个由宏生成的逻辑,但它会使代码混乱且效率低下。使用getSheetByName根据图纸名称获取所需图纸,而不是获取活动图纸。

解决方案:

在此解决方案中,将Sheet1更改为要复制的图纸的名称。

function CopyDataSheet() {
const spreadsheet = SpreadsheetApp.getActive();
const sheet = spreadsheet.getSheetByName('Sheet1'); 
const today = Utilities.formatDate(new Date(), spreadsheet.getSpreadsheetTimeZone(), "MM/dd/yyyy");
sheet.copyTo(spreadsheet).setName(today);
};

最新更新