我正在尝试复制this example sheet中使用的脚本 目标是将一个数据单元格按“,”分割成多个行,以维护该行中相应列的数据。
运行脚本时,我不断收到以下错误消息:
TypeError:无法从未定义中读取属性“ length”。 (第6行,文件“代码”)
function result(range) {
delimiter = ", "
targetColumn = 1
var output2 = [];
for(var i=0, iLen=range.length; i<iLen; i++) {
var s = range[i][targetColumn].split(delimiter);
for(var j=0, jLen=s.length; j<jLen; j++) {
var output1 = [];
for(var k=0, kLen=range[0].length; k<kLen; k++) {
if(k == targetColumn) {
output1.push(s[j]);
} else {
output1.push(range[i][k]);
}
}
output2.push(output1);
}
}
return output2;
}
答案 0 :(得分:0)
嗯,我认为这是您要尝试完成的事情,因此也许这个简单的示例会有所帮助。该函数查看第4列,并将逗号分隔的值拆分为数组tA,然后为每个值创建一个单独的行,并在其他列中使用相同的值。
在运行之前,这是我的数据:
运行后,这是我的数据:
这是我的代码:
function splitDataIntoSeparateRows() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=0;i<vA.length;i++){
var tA=vA[i][3].split(',');
if(tA.length>1){
for(var j=0;j<tA.length;j++){
var vB=[vA[i][0],vA[i][1],vA[i][2],tA[j]];
if(j==0){
vA.splice(i + j,1,vB);
}else{
vA.splice(i + j,0,vB);
}
}
}
}
sh.clearContents();
sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
}
您可能需要看一下文档,以了解该功能如何为您自己工作。