Google表格中的多个工作表的一项功能

时间:2018-01-11 12:05:49

标签: google-apps-script google-sheets

Google表格中的

我必须重复一项功能,因为getSheetByName()不接受一系列工作表,它只接受一张工作表。

有没有办法让一个函数循环遍历指定的工作表(不是所有工作表)?


(" Sheet1"," Sheet2")等。



function recordHistory_1() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName("Sheet1");
        var source = sheet.getRange("A2:B2");
        var values = source.getValues();
        values[0][0] = new Date();
        sheet.appendRow(values[0]);
};

function recordHistory_2() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName("Sheet2");
        var source = sheet.getRange("A2:B2");
        var values = source.getValues();
        values[0][0] = new Date();
        sheet.appendRow(values[0]);
};




我问的原因是因为我有超过20张,所以我必须写这个功能20次......

2 个答案:

答案 0 :(得分:2)

您可以为20个不同的调用概括/重用相同的函数,如下所示。

    var sheetListArray = ["Sheet1", "Sheet2", "Sheet3"......"Sheet20"]
    var ss = SpreadsheetApp.getActiveSpreadsheet();

    for( var i = 1 ; i <= sheetListArray.length ; i++)
       // You can call the below function 20 time with different Sheet name each time.
      recordHistory(sheetListArray[i]);
    }

    function recordHistory(sheetName) {  
            var sheet = ss.getSheetByName(sheetName);
            var source = sheet.getRange("A2:B2");
            var values = source.getValues();
            values[0][0] = new Date();
            sheet.appendRow(values[0]);
    }

答案 1 :(得分:1)

您也可以调用该函数一次,并遍历函数内的一系列工作表名称。

function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
["Sheet1", "Sheet2", "Sheet3"].forEach(function (s) {
    var sheet = ss.getSheetByName(s);
    var values = sheet.getRange('A2:B2').getValues()
    values[0][0] = new Date();
    sheet.appendRow(values[0]);
})
}