Что я хочу сделать, это проверить наличие дубликатов между всеми листами Google и, если они есть, пометить их цветом. На данный момент я оставил заголовки своим столбцам, чтобы посмотреть, помечает ли он их красным. Я нашел один сценарий, который, как все говорили, работал, однако я получил действительно случайные результаты. Не могли бы вы помочь с этим?
Сценарий:
Array.prototype.countItem = function (item) {
var counts = {};
for (var i = 0; i < this.length; i++) {
var num = this[i];
counts[num] = counts[num] ? counts[num] + 1 : 1;
}
return counts[item] || 0;
}
function findDuplicatesOnAllSheets() {
var nondupes = [];
SpreadsheetApp.getActive()
.getSheets()
.forEach(function (s) {
s.getRange('A1:E500')
.getValues()
.reduce(function (a, b) {
return a.concat(b);
})
.forEach(function (x, i, v) {
if (x && nondupes.countItem(x) == 0) {
nondupes.push(x)
} else if (x && nondupes.countItem(x) >= 1) {
s.getRange(i + 1, 3)
.setBackground('red');
}
});
});
}
Это лист, на котором я его тестировал, и, начиная с листа 3, вы можете видеть, что результаты были случайными. Файл должен иметь только заголовки как дубликаты.
https://docs.google.com/spreadsheets/d/1naYaxR0f_wGsRP4-nBRZfAJ9ZqxpyA1uqQ9Uz5xvwNs/edit#gid=1044860260