在我的工作表中转置数组

时间:2016-11-22 16:42:43

标签: arrays google-apps-script

我正在使用以下代码行从FB api调用中推送电子表格中的一些数据:

ass = SpreadsheetApp.getActiveSpreadsheet();
ass.getRange('a1').offset(0, 0, ar.length, ar[0].length).setValues(ar);

然而有了这个,我的数据在两列上排序如下:

Data1    Value1
Data2    Value2
Data3    Value3

我想要以下输出:

Data1   Data2   Data3
Value1  Value2  Value3

当我使用apprendRow方法时,我遇到了错误。我也试过像这样重构我的代码:

for (var i in data.data){
    for (var k in data.data[i].values) {
        sheet.appendRow([data.data[i].values[k].value]);
    }

但仍未成功。

我知道这是一个共同问题,但我找不到可以帮助我的答案。

感谢。

2 个答案:

答案 0 :(得分:2)

如果它只有2列,你可以试试这个:

function transpose(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()
  var array = sheet.getRange('A1:B3').getValues();  //or define your own range

  var newArray = array[0].map(function(col, i) { 
    return array.map(function(row) { 
      return row[i] 
    })
  })

  var i = 0;
  while (i < newArray.length) {
    sheet.appendRow(newArray[i]);  // or pick a different sheet to appended to
    i++
  }
}

答案 1 :(得分:0)

确定。我想出了以下解决方案:

ass = SpreadsheetApp.getActiveSpreadsheet();
ass.getRange('a1').offset(0, 0, ar.length, ar[0].length).setValues(ar);

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[1];
  var DailyReach = sheet.getRange('Sheet1!A1').getValue();
  var WeeklyReach = sheet.getRange('Sheet1!A2').getValue();
  var MonthlyReach = sheet.getRange('Sheet1!A3').getValue();
  sheet.appendRow([DailyReach,WeeklyReach,MonthlyReach]);

我正在将数据写入第二张表。如果有人有更好的东西!