Задача 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]];
});