Bonjour,
J'ai pu adapter un de mes scripts :
1 - il itère sur toutes les feuilles et récupères toutes les formules importRange
2 - il récupère toutes les ID des fichiers contenus dans les importRange
3 - il récupère dans le drive les noms de fichier correspondants
function extraitNomsImportrange() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const allSheets = ss.getSheets();
var ids = []; // liste des ID
var filesNames = []; // liste des noms de fichiers
// cet element itère sur toutes les feuilles, toutes les données pour isoler les IMPORTRANGE, puis à l'aide de regex isole les IDs
allSheets.forEach(sheet => {
const data = sheet.getDataRange().getFormulas();
data.forEach(row => {
row.forEach(formula => {
if (formula && formula.toUpperCase().includes("IMPORTRANGE")) {
const match = formula.match(/IMPORTRANGE\(["']([^'";]+)["']/i);
if (match && match[1]) {
const rawURL = match[1].replace(/['"]/g, "");
const idMatch = rawURL.match(/[-\w]{25,}/);
if (idMatch && idMatch[0]) {
ids.push(idMatch[0]);}}}});});});
// à partir des ids, teste de récuperer le nom du fichier dans le drive
ids.forEach(function(result) {
try{
var file = DriveApp.getFileById(result);
filesNames.push(file.getName())
}catch(e){
filesNames.push("fichier inconnu")}})
Logger.log(filesNames)
}
Dans ce script il ne fait que log les noms des fichier, mais si tu veux l’insérer quelque part tu peux ajouter :
const sheetDestination = ss.getSheetByName('Feuille 3');
var data = filesNames.map(name => [name]);
sheetDestination.getRange(1,1,filesNames.length,1).setValues(data);
(dans cette exemple j’insère dans la colonne A de la feuille 3)