将数组分配给范围时无法转换错误

时间:2012-07-12 19:42:37

标签: arrays google-apps-script runtime-error google-sheets

下面是我的代码,在最后一行代码中,我得到了一个"无法转换错误"。 澄清一行:sheet.getRange会引发错误。

这就是错误所说的;仅此而已,#34;无法转换"。此外,这是完整的代码,所以没有别的。

 function days(){   
      var table = new Array(7); 

      for ( var i = 0; i < 7 ; i ++){
        table[i] = i+2;  
        }

       var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Want");
           sheet.getRange("B2:B9").setValues(table); 

        }

3 个答案:

答案 0 :(得分:3)

SetValues()将2维数组作为参数,TABLE是1维数组...这不能正常工作......虽然很容易改变,但是表格是一个二维数组7个要素。

像这样:table[i] = [i+2];

btw,范围('B2:B9')高8个单元格,你只给出7个值...那里会出现问题!

答案 1 :(得分:3)

我对Google Apps脚本一无所知,但我设法在Google上找到this

看来你的桌子需要是一个二维数组。

也许这会有所帮助?

(代码来自上面的链接)

var myTable = [[1, 2, 3, 4],[5, 6, 7, 8]];
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1,2,4).setValues(myTable);

答案 2 :(得分:1)

我想出了这个问题的问题,所以我会回答这个问题,以便其他人可以受益。这里的问题是Range对象的.setValues方法必须给出一个二维数组[] []。所以我在另一个内部创建了一个0维数组,这样我现在就拥有了一个二维数组。

var array = new Array(7);

 for (var i = 0; i < 7; i++) {
    array[i] = new Array(0);
  }