2017-04-05 108 views
0

我正在尋找一些行的循環中的電子表格中的一組數據,然後將值寫入到一個新的工作表通過行中的每個單元格值。Google Apps腳本 - 讀取電子表格數據,循環和寫回數據

這裏是一個樣本數據集的鏈接。 Sample Data

上述電子表格中的Sheet1顯示原始數據。我想讀取這些數據並將其寫入表2(2),使其看起來像上面鏈接的表2中的內容。

這是我現在使用的代碼,但它將所有數據寫入單個列。

function myfunction() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var sheet2 = 
     SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2'); 
    var data = sheet.getDataRange().getValues(); 
for (var i = 0; i < data.length; i++) { 
    for (var j = 0; j < data[i].length; j++) { 
     var iava_value = (data[i][0]); 
     var lastRow = sheet2.getLastRow();   
     sheet2.getRange(lastRow +1, +1).setValue(data[i][j]); 
} 
}; 
} 
+1

嘗試(var i = 0; i Juniar

+1

在循環內用[j]替換[0]。成爲var iava_value =(data [i] [j]);然後將sheet2設置爲:sheet2.getRange(lastRow + 1,+ 1).setValue(data [i] [0]); – Juniar

+0

謝謝你的建議..沒有得到我想要的。 – jjones312

回答

0

此代碼將在第一個可用行寫在數據

function myfunction() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2'); 
    var lastRow = sheet2.getLastRow(); 
    var colCounter = 1 
    var data = sheet.getDataRange().getValues(); 
    for (var i = 0; i < data.length; i++) { 
    for (var j = 0; j < data[i].length; j++) { 
     var iava_value = (data[i][0]);  
     sheet2.getRange(lastRow +1, colCounter).setValue(data[i][j]); 
     colCounter++; 
} 
}; 
} 

但是,請注意上面的代碼是不處理/寫數據的最有效方式。大量的開銷=將時間單獨寫入表單。

這是一個更好的方法

function myfunction() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2'); 
    var lastRow = sheet2.getLastRow(); 
    var data = sheet.getDataRange().getValues(); 
    var reArrangeData = [] 
    for (var i = 0; i < data.length; i++) { 
    reArrangeData = reArrangeData.concat(data[i]) 
    // concat the arrays end over end to get 1D array 
} 
sheet2.getRange(lastRow +1, 1, 1, reArrangeData.length).setValues([reArrangeData]); 
}; 
} 

希望幫助

+0

謝謝,但它把整個單行。我正在尋找最終的結果是兩列。第一列包含每行中的第一個單元格,第二列包含每行中最左側單元格右側的每個單元格的值。 – jjones312

1

這裏是什麼,我試圖做一個工作版本。

function transpose() { 
    var sheet = 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); 
    var sheet2 = 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2'); 
    var data = sheet.getDataRange().getValues(); 
    var myRA = new Array(2); 
    for (var i = 0; i < data.length; i++) { 
    //GET IAVA No 
    var iava_no = data[i][0];  

    for (var j = 1; j < data[i].length; j++) { 
     var plugin_id = (data[i][j]);  

    if(plugin_id === "" || plugin_id =="n" || plugin_id == "a"){   
    break;   
    } 
    else 
    { 
    Logger.log(plugin_id); 
    var lastrow = sheet2.getLastRow();  
    sheet2.getRange(lastrow + 1, 1).setValue(data[i][0]);   
    sheet2.getRange(lastrow + 1, 2).setValue(data[i][j]); 
    } 
} 
} 
} 
相關問題