Есть ли способ объединить несколько диапазонов в один диапазон для листов приложения? - PullRequest
0 голосов
/ 04 февраля 2020

Я пытался объединить 2 диапазона (значения WITH) в 1 диапазон (пусто)

Я пытался сделать это так

function regressionMaker(){

  var app = SpreadsheetApp;
  var activeSheet = app.getActiveSpreadsheet().getActiveSheet();

  var name = activeSheet.getRange ("E2:E").getValues();
  var title = activeSheet.getRange ("F2:F").getValues();

  var x = " - ";

  activeSheet.getRange("T2:T").setValues(name + x + title);
}

Все, что я получаю, это сообщение об ошибке "Не удается найти метод setValues ​​(string)"

Я ожидал получить результат

Столбец 1 Столбец 2 Столбец3

Apple Banana Apple - Банан

Обновления


  var name = activeSheet.getRange ("E2:E").getValues();
  var title = activeSheet.getRange ("F2:F").getValues();


  var merged = name.map(

    function(nameValues,rowIndex){

    var titleValues = title[rowIndex];
    return [nameValues[0] + ' - ' + titleValues[0]];
    }
  );

  activeSheet.getRange("V2:V").setValues(merged);

То ничего не произошло :(

1 Ответ

2 голосов
/ 04 февраля 2020

Задача 1.1

Вы пытаетесь передать String методу setValues(), который может быть передан только двумерным Array (то есть массивом Массивы). Сообщение об ошибке гласит: «нет метода setValues() такого, чтобы он принимал String в качестве аргумента».

Задача 1.2

getValues() метод также выдает массив массивов, поэтому ваши переменные names и title на самом деле содержат [['Apple']] и [['Banana']] соответственно (при условии, что ваши диапазоны содержат только значения).

Задача 1.3

JavaScript - это , динамически набираемый , поэтому он выполняет приведение типов за вас и часто приводит к таким проблемам, как у вас. В случае +, если какой-либо аргумент имеет тип String, JS попытается привести другой аргумент к String (например, '11' + 2 = '112').

Решение

Вышеупомянутые проблемы должны привести вас к алгоритму: «сопоставить каждую строку данных в столбце 1 с столбцом 2 таким образом, чтобы в результате была получена конкатенация строк обоих значений, разделенных дефисом с двумя пробелами ".

Приложение

Поскольку вы выполняете объединение в один столбец, все, что вам нужно, это получить первое значение из столбца 1, первое значение из столбца 2, объединить их и обернуть в массив, представляющий новую ячейку.

var merged = names.map(function(nameValues,rowIndex){
  var titleValues = titles[rowIndex];
  return [nameValues[0] + ' - ' + titleValues[0]];
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...