我有一个for循环,用于构建大小为n行×10列的数据数组。
var dupRows = crossoverDuplicates.getDataRange();
var dupNumRows = dupRows.getNumRows();
var dupValues = dupRows.getValues();
var retreiveNotFound = [];
for (var c = 1; c < dupNumRows; c++) {
var dupRow = dupValues[c];
if (dupRow[10] == "") {
retreiveNotFound.push(dupValues[c]);
}
}
然后我使用setValues()将数组粘贴到另一个工作表的底部。
if (retreiveNotFound && retreiveNotFound.length) {
crossover.getRange(lastRowCrossoverData + 1, 2,
retreiveNotFound.length,10 ).setValues(retreiveNotFound);
}
但是,目标表上的列现在已经移动了,我需要将数组的前7列粘贴到B-H中,将最后3列粘贴到AV-AX中。
或者,我可以创建两个数组,一个包含前7列,另一个包含最后一个3,然后单独粘贴。
不幸的是,我无法弄清楚如何做到这一点。
我猜这有一个相对简单的解决方案,但我不是在寻找正确的关键词。在此先感谢您的帮助!
答案 0 :(得分:1)
将Google电子表格列移至两个不同的位置。拆分Google电子表格列并将它们放入不同的列或两个不同的列中。此代码从一个位置获取数据,然后创建两个单独的数组,并将数据写入两个不连续的范围。
function myFunction() {
var dupRows = crossoverDuplicates.getDataRange();
var dupNumRows = dupRows.getNumRows();
var dupValues = dupRows.getValues();
var B_H_Array = [];
var AV_AX_Array = [];
var AV_AX_TempArray, B_X_TempArray, c, dupRow, thisRowsData;//Define variables
//without assigning a value
for (c = 1; c < dupNumRows; c++) {
dupRow = dupValues[c];
if (dupRow[10] == "") {
thisRowsData = dupValues[c];
B_X_TempArray = thisRowsData.slice(0,7);//Slice out the first elements
AV_AX_TempArray = thisRowsData.slice(7,10);//Slice out last elements
B_H_Array.push(B_X_TempArray);
AV_AX_Array.push(AV_AX_TempArray);
}
}
if (B_H_Array.length) {
crossover.getRange(lastRowCrossoverData + 1, 2,B_H_Array.length, B_H_Array[0].length )
.setValues(B_H_Array);
}
if (AV_AX_Array.length) {
crossover
.getRange(lastRowCrossoverData + 1, 48,AV_AX_Array.length, AV_AX_Array[0].length )
.setValues(AV_AX_Array);
}
}