TypeError: Невозможно прочитать свойство "length" из сценария неопределенных листов - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь скопировать скрипт, использованный в этом примере Цель состоит в том, чтобы разбить ячейку с данными, разделенными на «,», на несколько строк, сохраняя данные из соответствующих столбцов в строке.

Я продолжаю получать следующую ошибку при запуске сценария:

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;
}

1 Ответ

0 голосов
/ 07 ноября 2018

Ну, я думаю, что это то, чего вы пытаетесь достичь, так что, возможно, этот простой пример поможет. Функция просматривает столбец 4 и разбивает значения, разделенные запятыми, на массив tA, а затем создает отдельную строку для каждого значения с такими же значениями в других столбцах.

Вот мои данные перед запуском:

enter image description here

Вот мои данные после запуска:

enter image description here

и вот мой код:

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);
}

Возможно, вам придется взглянуть на документацию, чтобы увидеть, как эта функция работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...