2016-02-12 56 views
0

还在学习如何使用数组。我收到错误“无法转换数组为Object [] []。(46行,文件‘提交记’)无法将阵列转换为Odject [] []即使它是二维阵列

46号线是

targetSheet.getRange(lastRow+1, 1, 1, arrayOfData.length).setValues(arrayOfData); 

我曾经有过这样的错误,但它是因为数组的问题一个数组里面的,现在我不知道什么是错的事。

整个代码

function submitButtonClick() { 

    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getActiveSheet(); 

    Logger.log('sheet.getName(): ' + sheet.getName()); 


    if (sheet.getName() !== "SubmitReceipt") {return;}; 

    var targetSheet = ss.getSheetByName("ReceiptRecord"); 

    var arrayOfData = []; 

    var week = sheet.getRange(6,9).getValue(); 
    var emplN = sheet.getRange(4,9).getValue(); 
    var purDate = sheet.getRange(9,9).getValue(); 
    var purFrom = sheet.getRange(11,9).getValue(); 
    var custC = sheet.getRange(14,9).getValue(); 
    var deptC = sheet.getRange(16,9).getValue(); 
    var lotC = sheet.getRange(18,9).getValue(); 
    var laborC = sheet.getRange(20,9).getValue(); 
    var itemC = sheet.getRange(22,9).getValue(); 
    var hyperL = sheet.getRange(28,9).getValue(); 
    var notes = sheet.getRange(44,8).getValue(); 

    arrayOfData[0] = week; 
    arrayOfData[1] = emplN; 
    arrayOfData[2] = purDate; 
    arrayOfData[3] = purFrom; 
    arrayOfData[4] = custC; 
    arrayOfData[5] = deptC; 
    arrayOfData[6] = lotC; 
    arrayOfData[7] = laborC; 
    arrayOfData[8] = itemC; 
    arrayOfData[9] = hyperL; 
    arrayOfData[10] = notes; 

    Logger.log('arrayOfData '+ arrayOfData) 

    var lastRow = targetSheet.getLastRow(); 

    Logger.log('lastRow: ' + lastRow); 
    Logger.log('arraylength ' + arrayOfData.length); 

    targetSheet.getRange(lastRow+1, 1, 1, arrayOfData.length).setValues(arrayOfData); 

    sheet.getRange(6,9).clearContent(); 
    sheet.getRange(4,9).clearContent(); 
    sheet.getRange(9,9).clearContent(); 
    sheet.getRange(11,9).clearContent(); 
    sheet.getRange(14,9).clearContent(); 
    sheet.getRange(16,9).clearContent(); 
    sheet.getRange(18,9).clearContent(); 
    sheet.getRange(20,9).clearContent(); 
    sheet.getRange(22,9).clearContent(); 
    sheet.getRange(28,9).clearContent(); 
    sheet.getRange(44,8).clearContent(); 

} 

我知道这个代码是笨重的,并且可以更高效地编写和凝结,但我是因为我是JS的新手,故意用这种方式写这种方式,这对于我直接了解代码中正在发生的事情来说很简单。我希望我的理智努力不是我的问题的原因。请帮忙。 :)

+1

你可以显示logger.log结果吗?我想你应该简单地写'setValues([arrayOfData])'但我只是猜测;-) –

+0

你是对的!这就是它所需要的。非常感谢一群有眼光的人。 – JLBJones

+1

不客气:)。你的数组是一个简单的数组,'setValues()'需要一个数组数组,即使是一行数据。 –

回答

1

Serge insas在评论中回答了这个问题。他说:

我想你应该简单地写

setValues([arrayOfData])

,但我只是猜测;-)”

这确实解决问题谢谢,塞尔日。 insas!