Как установить значения массива для строк? - PullRequest
1 голос
/ 04 марта 2020

Я не понимаю, как установить значения массива в целевой диапазон строк после .map в Google Sheets.

function chekItNow() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const arrVals = sheet.getRange(1, 1, 7, 4).getValues();
  Logger.log(arrVals);
  for (let i = 0; i < 6; i++) {
    const nextVals = arrVals[i].map(x => x * 5);
    Logger.log(nextVals);
    let targetRange = sheet.getRange(1, 5, 7, 4);
    targetRange.setValues(nextVals);
  }
}

Я новичок в JS. К сожалению, не могу найти информацию об этом

Ответы [ 2 ]

1 голос
/ 05 марта 2020

setValues ​​() метод ожидает двухмерный массив в качестве параметра, в котором размер внешнего массива - для строк, а внутренний размер - для столбцов. Перед установкой значений сначала необходимо заполнить массив nextVals в пределах for l oop каждым массивом строк, которые вы получаете от функции .map на каждой итерации. Я протестировал следующий код и успешно работал:

function chekItNow() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const arrVals = sheet.getRange(1, 1, 7, 4).getValues();
  let nextVals=[];

  Logger.log(arrVals);
  for (let i = 0; i < arrVals.length; i++) {
    nextVals.push(arrVals[i].map(x => x * 5));
  }

  Logger.log(nextVals);
  let targetRange = sheet.getRange(1, 5, 7, 4);
  targetRange.setValues(nextVals);
}
1 голос
/ 04 марта 2020

Вам необходимо отобразить как внешние, так и внутренние массивы:

const rg = sheet.getRange(1, 1, 7, 4);
const arrVals = rg.getValues();
rg.setValues(arrVals.map(row => row.map(col => col*5)))

Также см. связанный ответ

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