Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GoogleSheets应用程序脚本:你能将数组写入一行而不是一列吗?_Javascript_Google Apps Script_Google Sheets_Google Apps Script Editor - Fatal编程技术网

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;i另一种方法是

var 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.