连接时如何获得字符串的一部分



为了提高工作表页面的加载速度,我想尝试将下面的函数转换为脚本。事实上,使用Chrome DevTools,我已经尝试删除里面有这个功能的列,页面速度从35秒显著提高到了14秒

功能:
={"ID"; arrayformula(IF(C2:C="";;(LEFT(C2:C;1))&"-"&(LEFT(D2:D;1))&(LEFT(E2:E;1))&"-"&(UPPER(RIGHT(B2:B;8)))))}

我不知道如何仅连接第C列的第一个字符、第D列的第一个子字符、第E列的第一子字符和第B列的最后八个字符。如何仅在C、D、E、B列中有值的条目或更新时运行脚本?

我尝试编写的代码:

function concatenate() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var lr = sheet.getLastRow()
var values1 = sheet.getSheetValues(2, 4, lr, 1);
var values2 = sheet.getSheetValues(2, 5, lr, 1);
var values3 = sheet.getSheetValues(2, 2, lr, 1);
var results = [];
for (var i = 0; i < lr; i++) {
results.push([values1[i] + " " + values2[i] + " " + values3[i]]);
}
sheet.getRange(2, 1, results.length).setValues(results);
}

使用String.slice获取字符串的一部分:

results.push([values1[i][0].slice(0,1) + " " + values2[i][0].slice(0,1) + " " + values3[i][0].slice(-8)]);

注意,values1是2D阵列。因此,需要[0]索引到内部维度中

最新更新