Почему TypeError: Cannot read property length from undefined отображается в Google Sheet?

Сообщение об ошибке:
TypeError: Невозможно прочитать свойство «длина» из неопределенного.

Примеры данных:
Данные

Сообщение об ошибке появляется после того, как вы выделите образец данных и нажмете кнопку, на которой есть сценарий Assign. Скрипт:

 function result(range) {
  var output2 = [];
  for(var i=0, iLen=range.length; i<iLen; i++) {
    var s = range[i][1].split(" ");    
    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 == 1) {
          output1.push(s[j]);
        } else {
          output1.push(range[i][k]);
        }
      }
      output2.push(output1);
    }    
  }
  return output2;
}

(видел этот код в Интернете и пытался заставить его работать, но не смог)


person doubl3D    schedule 29.11.2016    source источник
comment
Как вы определили range?   -  person Rudolf Manusachi    schedule 29.11.2016
comment
Либо range, s, либо range[0] не определено   -  person gromiczek    schedule 29.11.2016
comment
@RudolfManusadzhian Я планирую установить диапазон в зависимости от того, сколько строк я выделил в одном столбце   -  person doubl3D    schedule 04.12.2016
comment
@ Aaron24 Я про код спрашивал))   -  person Rudolf Manusachi    schedule 04.12.2016


Ответы (1)


Проще говоря, ошибка указывает на то, что у вас есть неопределенный массив.

Глядя на ваш код, есть 2 места, где это могло произойти. Убедитесь, что верно следующее:

  • range - это массив, переданный в функцию (функция не может быть вызвана сама по себе, в другом месте вы должны иметь result(arrayVar) вызов этой функции)
  • range переменная - это массив, содержащий массивы, поэтому она должна быть как минимум [[]] (например, var range = [[a1,a2,a3],[b1,b2,b3]]) приведет к range.lenght = 2 и range[0].lenght = 3, однако если у вас есть [a1, a2, b1, b2], то range.lenght = 4 и range[0].lenght не будут работать
person Vytautas    schedule 29.11.2016