【发布时间】:2020-05-19 17:11:22
【问题描述】:
我在 col A 中有这个函数来连接一些单元格以生成一个 ID:
={"ID"; arrayformula(IF(C2:C="";;(LEFT(C2:C;1))&"-"&(LEFT(D2:D;1))&(LEFT(E2:E;1))&"-"&(UPPER(RIGHT(B2:B;8)))))}
我正在尝试用脚本替换该函数,但我的代码不起作用。
怎么了?
function concatenate() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var lr = sheet.getLastRow()
var values1 = sheet.getSheetValues(2, 3, lr, 1);
var values2 = sheet.getSheetValues(2, 4, lr, 1);
var values3 = sheet.getSheetValues(2, 5, lr, 1);
var values4 = sheet.getSheetValues(2, 2, lr, 1);
var results = [];
for (var i = 0; i < lr; i++) {
results.push([values1[i][0].slice(0,1) + "-" + values2[i][0].slice(0,1) + values3[i][0].slice(0,1) + "-" + values4[i][0].slice(-8)]);
}
sheet.getRange(2, 1, results.length).setValues(results);
}
附:
如何在每次编辑时也运行脚本?
【问题讨论】:
-
工作时的输出应该是什么。不工作是什么意思。如果你想让它在用户手动编辑单元格的地方运行,请阅读文档中的触发器。
-
我有这个错误:“TypeError: values4[i][0].slice is not a function (riga 11, file "Codice")"
-
什么是 values4[i][0]?如果它不是字符串或数组,则 slice 不是方法。尝试使用调试器来了解更多关于正在发生的事情。
-
我想连接 col C 的第一个字符,col D 的第一个字符,col E 的第一个字符和 col B 的最后八个字符(values4[i][0 ])。
-
顺便说一句,这行
var values1 = sheet.getSheetValues(2, 3, lr, 1);应该是var values1 = sheet.getSheetValues(2, 3, lr-1, 1);以及所有其他行,就像它一样。目前,您循环结束数据。第三个参数是行数而不是最后一行。
标签: google-apps-script google-sheets string-concatenation