[英]Can I use a script to copy and rename a sheet in Google Sheets with the current data as the tab name?
我有一個每周更新的數據表。 我想要一個腳本來復制工作表並將其重命名為當前日期。 目標是在更新之前每周保留工作表中的數據,以便我有數據記錄。 這是我到目前為止的腳本:
/** @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(spreadsheet)方法將工作表復制到現有電子表格中,然后將其命名為今天的日期:
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);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.