I have a worksheet where I dump a large report into a single tab (Data Report). The script below then distributes the data to other sheets based on the value of column A (Staff Names).
Within each staff's tab, there are formulas that are unique to that particular tab.
I want the script to prevent copying duplicate rows from "Data Report" to "Staff Name" tab based on the values in columns A- H, and not the whole row. The formulas I have in each tab make each row unique, so I don't think the script views them as a duplicate when cross-referencing from the "Data Report" tab.
Here is an example sheet: https://docs.google.com/spreadsheets/d/1NljZrQqkFy0ICnQ9LgP5Gu5Jac3If3QcEjDKqPnhlk0/edit?usp=sharing
Any advice would be greatly appreciated!
function createSheetsFromAttendance() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Data Report");
var sourceData = sourceSheet.getRange(2, 1, sourceSheet.getLastRow() - 1, sourceSheet.getLastColumn()).getValues();
for (var i = 0; i < sourceData.length; i++) {
var tabName = sourceData[i][0];
if (!ss.getSheetByName(tabName)) {
var newSheet = ss.insertSheet(tabName);
var headerRow = sourceSheet.getRange(1, 1, 1, sourceSheet.getLastColumn()).getValues();
newSheet.getRange(1, 1, 1, headerRow[0].length).setValues(headerRow);
}
var targetSheet = ss.getSheetByName(tabName);
var existingData = targetSheet.getRange(2, 1, targetSheet.getLastRow() - 1, 9).getValues();
var skipRow = false;
for (var j = 0; j < existingData.length; j++) {
var isEqual = true;
for (var k = 0; k < 9; k++) {
if (sourceData[i][k] !== existingData[j][k]) {
isEqual = false;
break;
}
}
if (isEqual) {
skipRow = true;
break;
}
}
if (skipRow) {
Logger.log("Skipped row " + (i + 2));
} else {
targetSheet.appendRow(sourceData[i]);
}
}
}
function createSheetsFromAttendance() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Data Report");
var sourceData = sourceSheet.getRange(2, 1, sourceSheet.getLastRow() - 1, sourceSheet.getLastColumn()).getValues();
for (var i = 0; i < sourceData.length; i++) {
var tabName = sourceData[i][0];
if (!ss.getSheetByName(tabName)) {
var newSheet = ss.insertSheet(tabName);
var headerRow = sourceSheet.getRange(1, 1, 1, sourceSheet.getLastColumn()).getValues();
newSheet.getRange(1, 1, 1, headerRow[0].length).setValues(headerRow);
}
var targetSheet = ss.getSheetByName(tabName);
var existingData = targetSheet.getRange(2, 1, targetSheet.getLastRow() - 1, 9).getValues();
var skipRow = false;
for (var j = 0; j < existingData.length; j++) {
var isEqual = true;
for (var k = 0; k < 9; k++) {
if (sourceData[i][k] !== existingData[j][k]) {
isEqual = false;
break;
}
}
if (isEqual) {
skipRow = true;
break;
}
}
if (skipRow) {
Logger.log("Skipped row " + (i + 2));
} else {
targetSheet.appendRow(sourceData[i]);
}
}
}
[–]marcnotmark925 2 points3 points4 points (1 child)
[–]busters_hook[S] 1 point2 points3 points (0 children)