Не могу вставить массив в диапазон с помощью setValue () - PullRequest
0 голосов
/ 22 июня 2019

Я отобразил функцию в массив, который должен дать мне Yes или No в зависимости от ввода, когда я Logger.log(costsfinalised) массив, я получаю это:

[No, No, No, No, Yes, No, No, Yes, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No]

Но когда япопробуйте вставить его с помощью setValues(costsfinalised), я получаю сообщение об ошибке «Невозможно преобразовать массив в объект», и когда я делаю setValue(costsfinalised), он работает, но только с No s (это не совсем то, что в журналеПочему? Как вставить этот массив в диапазон?

var costsfinalised=sourcevalues.map(costs);

  //Logger.log();
  Logger.log(costsfinalised);

destinationsheet.getRange(2,7,costsfinalised.length,1).setValues(costsfinalised);

1 Ответ

3 голосов
/ 22 июня 2019

Задача

Вы пытаетесь передать недопустимый аргумент в метод, setValues() принимает только двумерные Array экземпляры. Вы должны рассматривать двумерное Array как отображение ячеек, где элементы представляют строки и их элементы столбцы :

//pseudo-code;
[
 row 1 : [col1, col2],
 row 2 : [col1, col2]
]

Решение

Вы можете изменить свой код для генерации этого Array для вас (судя по вашему коду, вы хотите заполнить один столбец, верно? Независимо от этого, если вы добавите второй цикл для генерации значений столбцов, вы сможете для заполнения Range произвольным числом строк и столбцов):

var col = destinationsheet.getRange(2,7,costsfinalised.length,1);

var temp = [];

for(var i=0; i<costsfinalised.length; i++) {
  var row = [ costsfinalised[i] ];
  temp.push(row);
}

col.setValues(temp);

Альтернатива

Кроме того, вы можете использовать map метод на вашем Array (в вашем случае вы можете просто ссылаться на cost вместо costsfinalised[i] - просто не забудьте также обернуть его - return [ cost ] ):

var col = destinationsheet.getRange(1,1,costsfinalised.length,1);

var output = costsfinalised.map(function (cost,i) { return [ costsfinalised[i] ]; } );

col.setValues(output);

Полезные ссылки

  1. setValues() метод ссылка ;
  2. Array встроенный ссылка в MDN;
  3. map() метод ссылка в MDN;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...