簡體   English   中英

我可以使用腳本以當前數據作為選項卡名稱復制和重命名 Google 表格中的工作表嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM