autant pour moi, j'ai corrigé en mettant un filtre
ids=ids.filter(onlyUnique)
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var base = ss.getSheetByName('base')
var crmr = ss.getSheetByName('CR-MR')
var ids = []
var dataBase = []
base.getRange('A12:L' + base.getLastRow()).getValues().forEach(r => {
var id = r[0].toString()
if (r[6] != '') {
ids.push(id)
dataBase.push([id, r[6], r[7]])
}
if (r[8] != '') {
ids.push(id)
dataBase.push([id, r[8], r[9]])
}
if (r[10] != '') {
ids.push(id)
dataBase.push([id, r[10], r[11]])
}
})
var dataCrmr = []
crmr.getRange('A10:C' + crmr.getLastRow()).getValues().forEach(r => {
if (r[0] != '') {
var id = r[0].toString().substring(0, 7)
dataCrmr.push([id, r[1], r[2]])
ids.push(id)
}
})
ids=ids.filter(onlyUnique)
var n = 0
for (var i = 0; i < ids.length; i++) {
var m1 = dataBase.filter(r => r[0] == ids[i]).length
var m2 = dataCrmr.filter(r => r[0] == ids[i]).length
n += Math.max(m1, m2)
}
var result = Array.from({ length: n + 1 }, () => Array.from({ length: 5 }, () => ''));
result[0] = ['ref', 'coefA base', 'coefB base', 'coefA CR-MR', 'coefB CR-MR']
n = 1
for (var i = 0; i < ids.length; i++) {
m1 = n
dataBase.filter(r => r[0] == ids[i]).forEach(x => {
result[m1][0] = x[0]
result[m1][1] = x[1]
result[m1][2] = x[2]
m1 += 1
})
m2 = n
dataCrmr.filter(r => r[0] == ids[i]).forEach(x => {
result[m2][0] = x[0]
result[m2][3] = x[1]
result[m2][4] = x[2]
m2++
})
n += Math.max(m1 - n, m2 - n)
}
var byScript = ss.getSheetByName('byScript')
byScript.clearContents()
byScript.getRange(1, 1, result.length, result[0].length).setValues(result)
}
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}