Google Apps脚本 - 读取电子表格数据,循环和写回数据

问题描述:

我正在寻找一些行的循环中的电子表格中的一组数据,然后将值写入到一个新的工作表通过行中的每个单元格值。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

此代码将在第一个可用行写在数据

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

这里是什么,我试图做一个工作版本。

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]); 
    } 
} 
} 
}