我试图将2个范围(具有值)合并为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-Banana)
更新
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);
什么都没发生:(
答案 0 :(得分:2)
问题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]];
});