如何将数组写入Google Spreadsheet?

时间:2014-12-02 18:16:50

标签: javascript arrays google-apps-script google-sheets

我正在构建一个包含整数值的数组,并试图一次性将其写入Google电子表格:

var myArray=new Array();
    for (i=1;i<=100;i++){
      myArray[i]=i;
    };

    ss.getRange(8,4,1,100).setValue(myArray);

这是在正确的单元格上写,但每个单元格的内容是:

[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, ...]

4 个答案:

答案 0 :(得分:3)

您必须将myArray添加到另一个数组中。按照以下方式进行,

var data = [];
var myArray=new Array();
    for (i=0;i<100;i++){     // You have to change index to 0 here.
      myArray[i]=i;
    };
data.push(myArray);

ss.getRange(8,4,1,100).setValues(data);

答案 1 :(得分:2)

尝试这个,它为您提供100个单元格,其值为0到99:

var myArray = [];

for (i=0 ; i<100 ; i++){
  myArray[i] = i;
}

sheet.getRange(8, 4, 1, 100).setValues([myArray]);

这对您不起作用的一个原因是您使用的是setValue()而不是setValues()。另一个原因是,如果您一直在使用setValues(),那么您可能会尝试将1D数组强制为基本上是2D数组的数组。要解决这个问题,请务必使用setValues([myArray]),它使用一维myArray制作2D数组,而不是setValue(myArray)

答案 2 :(得分:1)

根据您希望如何编写数据,您可以通过两种方式执行此操作:两者都将创建数组数组(也称为矩阵2D数组):

2个代码示例:

function writeToSheetRows(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  
  var myArray=new Array();
    for (i=1;i<=100;i++){
      myArray.push([i]);
    }
  ss.getRange(8,4,myArray.length,myArray[0].length).setValues(myArray);
}
function writeToSheetCols(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  
  var myArray=new Array();
    for (i=1;i<=100;i++){
      myArray.push(i);
    }
  ss.getRange(8,4,1,myArray.length).setValues([myArray]);
}

请注意,必须使用带有S的setValues()(而不是setValue())

答案 3 :(得分:0)

你可以这样做:

function write(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('-sheet name-');
  var myArray=new Array();
    for (i=0;i<100;i++){
      myArray[i]=i;
    }
sheet.getRange(8,4,1,100).setValues([myArray]);
}
希望有所帮助!