setValues 无法将数组转换为对象 [][]



我一直在Google Apps脚本上为工作表编写以下内容:

  function basePesa(){
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("aux");
  var unique = sheet.getRange("C1").setFormula("=unique(A:A)");
 var Avals = sheet.getRange("C1:C").getValues();
 var Alast = Avals.filter(String).length;
 var transp = sheet.getDataRange().getValues();
 var ss = SpreadsheetApp.openById("14Y3xiAa9kdoK_YO_tAVN-YWC9RE1EANV5wm8Ez1sa1o");
 var base =ss.getSheetByName("Base PESA");
 var values = base.getDataRange().getValues();
 var newdata = new Array(values.length);
 var y = 0;
//  Browser.msgBox(transp.length);
 for(var i=0;i<Alast;i++){

 var tra = Avals[i][0];
 for(var x =1; x<values.length;x++){
 if(values[x][18] == tra){
  newdata[y] = new Array(values[0].length);
 for(var p=0; p<values[0].length;p++)
 newdata[y][p] = values[x][p];   
 y++;
 }
 }   
  }
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bco de Dados").getRange("A2:AZ"+(y+1)+"").setValues(newdata);
// Browser.msgBox(newdata);

}

似乎我无法将数组写入范围。我已经检查了范围是否匹配,并且我确定这个数组是 2D 数组。有什么指示吗?

提前感谢!

数组 1: [ a , b , c ] <----兼容 1 行,3 列

阵列 2: [ [a] , [b] , [c] ] <---兼容 3 行 1 列

数组 3: [ [ a , b, c ] , [ a , b , c ] ,

[ a , b , c ] <---兼容 3 行 3 列**

**请务必注意,对于每个较小的数组,较大数组(在本例中为 3(中每个较小数组的宽度必须相同。

单击此处查看视觉示例(图片(

似乎 newdata 数组的创建是问题所在。这是一个正在运行的示例(我将错误代码放在注释中(:

function basePesa(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("aux");
  var unique = sheet.getRange("C1").setFormula("=unique(A:A)");
  var Avals = sheet.getRange("C1:C").getValues();
  var Alast = Avals.filter(String).length;
  var transp = sheet.getDataRange().getValues();
  var ss = SpreadsheetApp.openById("14Y3xiAa9kdoK_YO_tAVN-YWC9RE1EANV5wm8Ez1sa1o");
  var base =ss.getSheetByName("Base PESA");
  var values = base.getDataRange().getValues();
  var newdata = [];//new Array(values.length);
  var y = 0;
  //  Browser.msgBox(transp.length);
  for(var i=0;i<Alast;i++){

    var tra = Avals[i][0];
    for(var x =1; x<values.length;x++){
      if(values[x][18] == tra){
        //newdata[y] = new Array(values[0].length);
        var test = [];
        for(var p=0; p<values[0].length;p++)
        {
          test.push(values[x][p]);
          //newdata[y][p] = values[x][p].toString(); 
        }
        newdata.push(test);
        y++;
      }
    }   
  }
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bco de Dados").getRange("A2:AZ"+(y+1)+"").setValues(newdata);
  // Browser.msgBox(newdata);
}

基于类似的问题,我猜在最后一行你有

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bco de Dados").getRange("A2:AZ"+(y+1)+"").setValues(newdata);

而不是

.setValues(newdata);

你应该使用

.setValues([newdata]);

请注意方括号!此解决方案与

...
var newdata = []
var test = []
...
test.push(values[x][p]
...
newdata.push(test)
...
....setValues(newdata)

相关内容

  • 没有找到相关文章

最新更新