2016-02-05 20 views
1

我正在編寫字段中的數據編碼插入到HTML(單元格包含像PlanétariumRua João Bettega, 01)的字段的腳本。我收到一個錯誤,不知道如何處理它。錯誤說「無法轉換數組爲Object [] []」Google表格腳本錯誤 - 無法將數組轉換爲對象[] []

我肯定通過一個兩維數組來.setValues(),所以我知道這不是它(發現這是一個常見的問題)。有任何想法嗎?這裏是我的功能:

// columns[] and columns2encode[] are set in the scope above this function 
function _encodeData() { 
    var sheet = _getSheet(); 
    var data = sheet.getDataRange().getValues(); 
    var rowCnt = data.length; 
    var colCnt = data[0].length; 
    var data2set = new Array(rowCnt-1); // creates array w/ row.length indeces 
    var colEncodeIndexList = []; 
    var origVal, encodedVal, range, cell; // used later in for loop(s) 

    toast('Start Encoding Data'); 

    // loop every row 
    for(var ri = 0; ri < data.length; ri++) { 
    if(ri !== 0) { 
     data2set[ri] = new Array(colCnt); // creates array w/ length of ~ 29 
    } 

    // loop every cell (column entry in the given row) 
    for(var ci = 0; ci < data[ri].length; ci++) { 
     // get text content of current cell 
     origVal = data[ri][ci]; 

     // if first row, headers - save matches in array for later 
     if(ri === 0) { // I split the ifs so inArray isn't called EVERY time 
     if(inArray(columns2encode, origVal)) { // add col header if "on the list" 
      colEncodeIndexList.push(ci); 
     } 
     } else { // isn't the header row 
     // if ! first row, values - col num must be in saved headers to encode OR it's a number 
     if(!inArray(colEncodeIndexList, ci) || typeof origVal === 'number') { 
      // just use origVal 
      data2set[ri][ci] = origVal; 
     } else { 
      // use encodedVal 
      encodedVal = _htmlEncode(origVal); 

      data2set[ri][ci] = encodedVal; 
     } 
     } // else 
    } // for (cells/cols) 
    } // for (rows) 

    // Now pass array of arrays (data) to setValues() 
    var setRange = sheet.getRange(2, 1, (data.length-1), data[0].length);//.getA1Notation(); // starts at 2, 1 (row 2, col 1) to ignore column header 
    setRange.setValues(data2set); 

    toast('Finished Encoding Data'); 
} 

在此先感謝!

+0

運行從腳本編輯器的代碼。它應該告訴你哪一行會引發錯誤。請告訴我們哪一行 – daniel

+1

錯誤在第130行('setRange.setValues(data2set);'方法調用)。 –

回答

0

問題是data2set[0]從不初始化(它始終爲NULL)。

來解決這個問題的最簡單的方法是輸出到電子表格之前移除data2set [0]:

data2set.shift(); // remove 1st item 
    setRange.setValues(data2set); 
+1

好找!我認爲我已經佔了0指數,但似乎沒有。感謝你的幫助,@丹尼爾 –

相關問題