行数组到列数组

时间:2017-03-20 21:33:15

标签: arrays google-sheets

使用Google表格脚本编辑器, 我从一行获取数组但需要将其写入列中的单元格。

这有效......

    var values1 = [
   [row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[11], row[10], row[24]]
 ];

 var range1 = Editsheet.getRange("A1001:L1001");
 range1.setValues(values1);

但我想要的是......

    var values1 = [
   [row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[11], row[10], row[24]]
 ];

 var range1 = Editsheet.getRange("D6:D17");
 range1.setValues(values1);

2 个答案:

答案 0 :(得分:0)

您需要像这样修改代码

//Put each element to be inserted into a row in the sheet into its own array/2 Dimension
 var values1 = [
   [row[1]], [row[2]], [row[3]], [row[4]], [row[5]] ... ,[row[24]]
 ];
// Your range size should match the array size so your range will be from D6:D29 (Total of 1 - 24 = 23 values in aray)
 var range1 = Editsheet.getRange("D6:D29");
// or you do this instead getRange(rowNo,ColNo,NoOFColumn,NoOfRow)
 range1 = Editsheet.getRange(6,4,values1.length,1)
 range1.setValues(values1);

您还可以使用循环将行值推送到新数组中,如此

var values = []
for(var i = 0; i < 24; i++){
  values[i] = []
  values[i][0] = row[i+1]      //Note modifying Row will also modify values
}
var range1 = Editsheet.getRange(6,4,values1.length,1)
range1.setValues(values1);

希望这有帮助

答案 1 :(得分:0)

当数据阵列从“A1001:L1001”导入“D6:D17”时,需要转置数组。现在你有一个包含1行x 12列的数组。在这种情况下,必须创建具有12行x 1列的数组。该脚本如下。

var values1 = [
  [row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[11], row[10], row[24]]
];
var values2 = [[i] for each (i in values1[0])]; // Here, transpose value1
var range1 = Editsheet.getRange("D6:D17");
range1.setValues(values2); 

如果要从具有n行x m列的数组转置到m行x n列的数组,可以使用以下脚本。

var values2 = [];
for (i in values1[0]){
  values2.push(values1.map(function(e,j){return e[i]}));
}