簡體   English   中英

如何使用 GAS/Javascript 實用地刪除 Google 電子表格中的工作表/標簽

[英]How do I delete a sheet/tab in a Google spreadsheet pragmatically using GAS/Javascript

我有一個代碼可以根據主工作表中的第一行值動態創建新工作表。

我想要代碼來檢查工作表名稱是否存在並覆蓋工作表或首先將其刪除(如果存在),然后從主工作表中的新數據重新創建它。

我將感謝您在重組方面的幫助。

function newSheet() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var templateSheet = ss.getActiveSheet();
    var sheet1 = ss.getSheetByName("main")
    var getNames = [...new Set(sheet1.getRange("A2:A").getValues().filter(String).toString().split(","))];

    for (var i = 0; i < getNames.length; i++) {
        var copy = ss.getSheetByName(getNames[i]);


       if (copy) {  // This is where I am kind lost on how to structure it.

        // if a copy exists delete or overwrite existing sheet here

        } else {

           var rowIndexes = sheet1.getRange("A:A").getValues()
                .map((value, index) => [value[0], (index + 1)])
                .filter(value => value[0] === getNames[i]);


            var namedSheet = ss.insertSheet(getNames[i]);
            rowIndexes.map(index => {
                var rowValues = sheet1.getRange(index[1], 1, 1, sheet1.getLastColumn()).getValues();
                namedSheet.appendRow(rowValues[0]);
            });

            ss.setActiveSheet(ss.getSheetByName(getNames[i]));
            ss.moveActiveSheet(ss.getNumSheets());
        }
    }
}

我認為有多種方法可以實現您正在尋找的解決方案

第一的:

是的,您可以更換它。

// This example assumes there is a sheet named "first"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var first = ss.getSheetByName("first");
first.setName("not first anymore");

所以在你的情況下,

var copy = ss.getSheetByName(getNames[i]);

if (copy) {  // This is where I am kind lost on how to structure it.

 copy.setName("New name")
 // if a copy exists delete or overwrite existing sheet here

 }

第二:是的,您也可以刪除工作表。

// The code below deletes the specified sheet.
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('My Sheet');
ss.deleteSheet(sheet);

所以在你的情況下,

 if (copy) {  // This is where I am kind lost on how to structure it.

 ss.deleteSheet(copy)
 // if a copy exists delete or overwrite existing sheet here

 }

對不起,如果我誤解了你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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