检查单元格数组是否不是所需值的有效方法

时间:2019-08-01 16:39:18

标签: google-apps-script google-sheets

我的第1行是标题行,我有一个onOpen()函数,运行该函数以确保所有标题均正确。

    onOpen(){

        var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
        s.getRange("A1").setValue("Order Number");    
    }

我大约有20个以上的标头,因此,无论我是否打开标头,每次打开它都会运行20次以上,它将填充或覆盖标头。 如您所见,这是非常低效的,而且我想知道是否有一种方法可以根据单元格的值来减少其运行时间。

我在循环中尝试过switch语句,以检查文本是否存在并且是否匹配,但运行时间大致相同。那么在优化运行时间的同时,还有一种更有效的方法吗?

2 个答案:

答案 0 :(得分:1)

如果一张纸的页眉超过20个,并且都具有预定值,则只需将它们全部一次设置即可。

function onOpen() {
  var headers = [
    ["Order Number", "Customer Name", /* etc... 20 more */, "Shipping Address"]
  ];
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1")
    getRange(1, 1, 1, headers[0].length).setValues(headers);
}

如何防止它们首先发生变化?

在工作表中,您可以单击“工具>保护工作表”,并设置警告或自定义权限来保护该范围。

答案 1 :(得分:0)

我想出了如何设置第一行的列值:

var headers = [[
    "Order",
    "Name",
    "Date",
    "Address"
    ]];
  // headers 
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Daily output").getRange(1,1,1, headers[0].length).setValues(headers);

这应该为第一行设置每一列的值,而只需要调用该类。