Alf*_*red 4 javascript google-sheets google-apps-script
我试图拆分具有由新行分隔的多个值的单元格,它适用于具有多于1个值的单元格,但是如果我得到一个只有1个值的单元格(即,没有换行符,则错误输出)我能解决这个问题吗?
function splitColumnAndRepeatRows(anArray, splitColumnIndex)
{
var output = [];
for (i in anArray)
{ // for each row
var splitArray = anArray[i][splitColumnIndex].split("\n"); // split values in specified column
for (j in splitArray)
{ // for each split cell value
if(splitArray[j]=="")
continue;
var row = anArray[i].slice(0); // take a copy of source row
//row[splitColumnIndex] = alltrim(splitArray[j]); // replace comma separated value with current split value
row[splitColumnIndex] =splitArray[j];
output.push(row); // push new row to output
}
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
链接到电子表格:https://docs.google.com/spreadsheet/ccc?key = 0AjA1J4T5598RdGRWd0p4Q3FtaW5QTG1MVVdEVUQ0NFE #gid = 0
小智 17
你可以使用内置函数= SPLIT(D1; CHAR(10))
Mog*_*dad 10
引发的错误是:
TypeError: Cannot find function split in object //OBJECT//. (line xx, file "xxxx")
Run Code Online (Sandbox Code Playgroud)
问题是这.split()是一个String方法.如果你的"单项"是文字,你就没事了 - 但如果它是一个数字或日期......繁荣!
幸运的是,.toString()数字和日期有一个共同点,对于字符串来说这是一个无操作.所以你可以把它添加到这一行:
var splitArray = anArray[i][splitColumnIndex].toString().split("\n"); // split values in specified column
Run Code Online (Sandbox Code Playgroud)
您正在使用错误版本的for索引数组.它有效,但你真的应该使用:
for (var i=0; i < anArray.length; i++) {
...
for (var j=0; j < splitArray.length; j++) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
你有另一个问题,虽然它不太可能.由于您的空字符串测试,有些情况会导致整行输入丢失.
要抓住这个,你只需要允许ONE"split"项可以为null:
if(splitArray[j]=="" && j>=1)
continue;
Run Code Online (Sandbox Code Playgroud)
function splitColumnAndRepeatRows(anArray, splitColumnIndex) {
var output = [];
for (var i = 0; i < anArray.length; i++) { // for each row
var splitArray = anArray[i][splitColumnIndex].toString().split("\n"); // split values in specified column
for (var j = 0; j < splitArray.length; j++) { // for each split cell value
if (splitArray[j] == "" && j >= 1)
continue;
var row = anArray[i].slice(0); // take a copy of source row
row[splitColumnIndex] = splitArray[j];
output.push(row); // push new row to output
}
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8159 次 |
| 最近记录: |