Я немного изменил код, так что теперь он работает для TEAM-A.Вы можете сделать то же самое для Team-B. Пожалуйста, смотрите комментарии в коде.Я проверяю, есть ли текущее значение в листе, если нет, добавляю его в новый массив строк.
function MastertoBrance() {
//Source SpreadSheet (MasterSpreadSheet)
var mss = SpreadsheetApp.getActive();
var mim = mss.getSheetByName("Master"); //Master in Master
var Tim1 = mss.getSheetByName("TEAM-A"); //Team in Master1
var Tim2 = mss.getSheetByName("TEAM-B"); //Team in Master2
// KeepValues (Row,Column,NumRows,NumCols)
var mdata = mim.getRange(3,2,mim.getLastRow() -1,mim.getLastColumn()).getValues();
var Tim1data = Tim1.getRange(3,2,Tim1.getLastRow() -1,Tim1.getLastColumn()).getValues();
var aaa =[];
var bbb =[];
for (var i = 0; i < mdata.length; i++) {
var rValue = mdata[i][3];//4 = No.Column for monitor(E column) keepStartcol2 E=3
if (rValue == "Team-A") {
aaa.push(mdata[i]);
} else if (rValue == "Team-B") {
bbb.push(mdata[i]);
}
}
if(aaa.length > 0) {
var newRows = [];
aaa.forEach(function (row) {
Logger.log(row);
var updated = false;
if(Tim1data.length > 0) {
Tim1data.some(function (existingRow, idx) {
// check we found the same row
if (row[0] === existingRow[0]) {
// update row
// +3 skips the header rows
Tim1.getRange(idx+3,2,1,row.length).setValues([row]);
// done
updated = true;
return updated;
}
});
}
// if we didn't update the data push to new rows array
if(!updated) {
newRows.push(row);
}
});
// check we found new rows
if(newRows.length > 0) {
// add all new rows at once Tim1.getRange(Tim1.getLastRow()+1,2,newRows.length,newRows[0].length).setValues(newRows);
}
}
}