Javascript GoogleSheets应用程序脚本:你能将数组写入一行而不是一列吗?
方法Javascript GoogleSheets应用程序脚本:你能将数组写入一行而不是一列吗?,javascript,google-apps-script,google-sheets,google-apps-script-editor,Javascript,Google Apps Script,Google Sheets,Google Apps Script Editor,方法.setValues()将获取一个数组[[0]、[1]、[2]、[3]],并将其写入.getRange(),该数组必须位于一列中的多行中:A1、A2、A3、A4 相反,我希望写入相同的数组,但将其写入一行:A1、B1、C1、D1。这是可能的,还是必须重新排列数组以始终写入单个列 编辑:对不起,我想我不清楚。我基本上是在寻找一种方法或类似于使用数组的appendRow方法的东西。数组可以是1D或2D(我可以很容易地编写一个循环来创建它们)。appendRow不适用于我的原因是该方法将数组放在数
.setValues()
将获取一个数组[[0]、[1]、[2]、[3]]
,并将其写入.getRange()
,该数组必须位于一列中的多行中:A1、A2、A3、A4
相反,我希望写入相同的数组,但将其写入一行:A1、B1、C1、D1。这是可能的,还是必须重新排列数组以始终写入单个列
编辑:对不起,我想我不清楚。我基本上是在寻找一种方法或类似于使用数组的appendRow方法的东西。数组可以是1D或2D(我可以很容易地编写一个循环来创建它们)。appendRow不适用于我的原因是该方法将数组放在数据的底部。我希望将数据行放置在我可以指定的范围内
例如,使用上面的数组,我想用getRange(1,3,10,10)中已有的数据将该数组写入getRange(1,4,1,4)。试试这个
function getData() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// var dataArray = ss.getRange(1, 1, ss.getLastRow(), 1).getValues();
var dataArray = [[0],[1],[2],[3]]
var dataUnit;
var data = [];
for (var i = 0; i < dataArray.length; i++) {
dataUnit = dataArray[i].toString();
data.push(dataUnit);
}
ss.appendRow(data);
}
函数getData(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//var dataArray=ss.getRange(1,1,ss.getLastRow(),1.getValues();
var dataArray=[[0]、[1]、[2]、[3]]
var数据单元;
var数据=[];
对于(var i=0;ivar dataArray = [[0],[1],[2],[3]].reduce(function (a, b) {
return a.concat(b);
});
Logger.log(dataArray); // [0, 1, 2, 3]
或者,如果需要二维数组(由.setValues()所需)
如果我没有读错,你可以把2D数组变成1d数组,这样就可以使用appendRow方法。有没有办法指定写入数据行的范围,而不是附加到当前数据的底部?据我所知,appendRow只能在底部放置一行。哦,绝对可以。您可以始终使用
getRange()
(就像我在var-dataArray=[[0]、[1]、[2]、[3]]
)和使用setValues()
:)啊,您说得对!我试图设置值([[1]、[2]、[3]])或设置值([1,2,3])。。我没有想过尝试使用setValues([[1,2,3]])来写入行。谢谢初学者虚拟时刻
var dataArray = [[[0],[1],[2],[3]].reduce(function (a, b) {
return a.concat(b);
})];
Logger.log(dataArray); // [[0, 1, 2, 3]] --> 2D array representing a single row.