Попробуйте это
function Migrate2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('OnBoard');
var targetSheet = ss.getSheetByName('NewHire');
var val = sheet.getRange('a3:l').getValues();
var headers = val.shift();
var arr = [],
rowsToWriteBack = [];
rowsToWriteBack.push(headers);
val.forEach(function (r, i) {
r[7] == 'COMPLETE'&& r[11] == 'N' ?
arr.push([r[0],r[1],r[2]]) :
rowsToWriteBack.push([r[0],r[1],r[2]])
});
if (arr.length > 0) {
for(var i = 0; i < arr.length; i++) {
targetSheet.getRange(targetSheet.getLastRow() + i + 1, 1, 1, 1).setValues(arr[i][0]);
targetSheet.getRange(targetSheet.getLastRow() + i + 1, 4, 1, 1).setValues(arr[i][1]);
targetSheet.getRange(targetSheet.getLastRow() + i + 1, 5, 1, 1).setValues(arr[i][2]);
}
}
}
}
Трудно протестировать без доступа к среде, в которой вы работаете, но я думаю, что вышеприведенное должно работать.Удачи!
Вот обновленная версия, которая (надеюсь) устраняет ошеломляющую проблему:
function Migrate2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('OnBoard');
var targetSheet = ss.getSheetByName('NewHire');
var val = sheet.getRange('a3:l').getValues();
var headers = val.shift();
var arr = [],
rowsToWriteBack = [];
rowsToWriteBack.push(headers);
val.forEach(function (r, i) {
r[7] == 'COMPLETE'&& r[11] == 'N' ?
arr.push([r[0],r[1],r[2]]) :
rowsToWriteBack.push([r[0],r[1],r[2]])
});
if (arr.length > 0) {
for(var i = 0; i < arr.length; i++) {
var addToRow = targetSheet.getLastRow() + i + 1;
targetSheet.getRange(addToRow, 1, 1, 1).setValues(arr[i][0]);
targetSheet.getRange(addToRow, 4, 1, 1).setValues(arr[i][1]);
targetSheet.getRange(addToRow, 5, 1, 1).setValues(arr[i][2]);
}
}
}
}
попытка № 3 для предотвращения пропуска строк
function Migrate2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('OnBoard');
var targetSheet = ss.getSheetByName('NewHire');
var startingRow = targetSheet.getLastRow() + 1;
var val = sheet.getRange('a3:l').getValues();
var headers = val.shift();
var arr = [],
rowsToWriteBack = [];
rowsToWriteBack.push(headers);
val.forEach(function (r, i) {
r[7] == 'COMPLETE'&& r[11] == 'N' ?
arr.push([r[0],r[1],r[2]]) :
rowsToWriteBack.push([r[0],r[1],r[2]])
});
if (arr.length > 0) {
for(var i = 0; i < arr.length; i++) {
var addToRow = startingRow + i;
targetSheet.getRange(addToRow, 1, 1, 1).setValues(arr[i][0]);
targetSheet.getRange(addToRow, 4, 1, 1).setValues(arr[i][1]);
targetSheet.getRange(addToRow, 5, 1, 1).setValues(arr[i][2]);
}
}
}
}