2013-04-08 34 views
4

我有一個我想放在電子表格行中的13維日期數組。Google電子表格腳本錯誤:「無法將(類)...轉換爲對象[] []」

當我調試代碼:

if (arrDates.length > 0) { 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var destSheet = spreadsheet.getSheetByName("Employee Capacity Detail"); 
    destSheet.getRange("C2").offset(0,0,arrDates.length).setValues(arrDates); 
} 

我收到此錯誤信息: 「不能轉換(類)@ 7c02952c爲Object [] []」。在這條線:

destSheet.getRange("C2").offset(0,0,arrDates.length).setValues(arrDates); 

我也試過這樣:

destSheet.getRange(1, 3, 1, 14).setValues(arrDates); 

這:

var destRange = destSheet.getRange("C2:P2"); 
destRange.setValues(arrDates); 

,並獲得同樣的錯誤。

在調試器中,我可以看到arrDates按預期填充了14個日期。

谷歌搜索此錯誤消息還沒有出現任何東西。有沒有人有任何想法爲什麼我得到這個錯誤,或者我可能做什麼來進一步排除故障?

回答

15

https://developers.google.com/apps-script/reference/spreadsheet/range#setValues(Object)

的這裏關鍵是,當你填充(或檢索數據),電子表格範圍,你必須始終「套」一個二維數組,即使範圍是一排高。在Javascript中,這將是一個「數組數組」,其中外部數組表示行,內部數組表示每行中的單元格。

想必你arrDates陣列是這樣的:

[DATE1,DATE2,DATE3 ...]

,當它需要的是這樣的:

[DATE1,DATE2,DATE3。 ..]

您與new Array(arrDates)語句來實現,或者你也可以只使用:

destSheet.getRange(1, 3, 1, 14).setValues([arrDates]));

0

這是我必須做的就是它的工作:

destSheet.getRange(1, 3, 1, 14).setValues(new Array(arrDates)); 

任何解釋的歡迎!

+0

使用arrDates.push([date1,date2 ...]);而不是arrDatesarrDates.push(date1,date2 ...); – jrosell 2015-06-03 18:47:50

0

確保發送到setValues的數組中的行數與getRange中指示的行數相匹配。

當我的數組中有2行太多時,我得到了這個錯誤。不知道爲什麼我沒有得到其他消息,我有時會看到有關範圍高度和陣列中行數之間的不匹配。

相關問題