2017-07-26 60 views
1

这是代码:阵列错误地粘贴使用appendRow

function worksheet(){ 
var arraymi = worksheetmi.getRange("A2:D").getValues(); 
var arraymi_n = []; 
var arrayme = worksheetme.getRange("A2:D").getValues(); 
var arrayme_n = []; 

for(x in arraymi){ 

if(arraymi[x][1] || arraymi[x][2] != ""){ 
var last = arraymi[x].pop(); 
arraymi[x].unshift(last); 
arraymi_n.push(arraymi[x]) 
}} 

for(x in arrayme){ 

if(arrayme[x][1] || arrayme[x][2] != ""){ 
var last = arrayme[x].pop(); 
arrayme[x].unshift(last); 
arrayme_n.push(arrayme[x]) 

}} 
var bdarray = bdworksheet.getRange("A1:A").getValues(); 
var length = bdarray.filter(String).length; 
var bdarray = bdworksheet.getRange("A1:D"+length+"").getValues(); 
for(x in arraymi_n){ 
bdarray.push(arraymi_n[x]); 
} 
for(x in arrayme_n){ 
bdarray.push(arrayme_n); 
} 


var length = bdarray.length; 
bdworksheet.getRange(1,1,bdarray.length,bdarray[1].length).setValues(bdarray); 
} 

这是错误:

Incorrect range width, was 253 but should be 4 (line 132, file "Code")

任何想法,为什么会出现这种情况?在使用相同的方法之前,我已经完成了这一步,但是253宽度正在扰乱我!

回答

1

显然你传递一个双数组作为参数appendRow,它需要一个单行数组的内容,如['q', 'w', 'e', 'r']

要插入双数组,使用getRange ... setValues方法组合,如下:

var sheet = SpreadsheetApp.getActiveSheet(); 
    var values = [[1, 2], [3, 4], [5, 6], [7, 8]]; 
    sheet.getRange(sheet.getLastRow()+1, 1, values.length, values[0].length).setValues(values); 

根据需要此自动添加行。

+0

对问题进行了调整。但是,这给了我另一个错误... –

+0

是否bdarray有一致的行长度?尝试'Logger.log(bdarray.map(function(r){return r.length}))'进行调试 – FTP