我正在寻找一些帮助,按行循环遍历电子表格中的一组数据,然后将第一个单元格中的值写入新工作表,然后将每个单元格值写入行。
以下是一组示例数据的链接。 Sample Data
上面的电子表格中的Sheet1显示了原始数据。我想读取该数据并将其写入第二张(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]);
}
};
}
答案 0 :(得分:2)
这是我尝试做的工作版本。
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]);
}
}
}
}
答案 1 :(得分: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]);
};
}
希望有所帮助