web-dev-qa-db-fra.com

Est-il possible d'appeler un IMPORTRANGE () et de l'inclure toutes les feuilles?

Voici ma fonction actuelle qui combine les données actuelles avec la première archive. J'aimerais le configurer comme une sécurité intégrée pour le futur afin qu'il y ait une nouvelle archive incluse dans l'importation:

QUERY({ARRAYFORMULA({IMPORTRANGE("****","'Current'!A2:Z");IMPORTRANGE("*****","'Archive1'!A2:Z")})},"select *") 

Y-a-t-il un moyen de faire ça?

2
Branden S. Smith

Il n’existe aucun moyen d’obtenir la liste des noms de feuille avec une fonction de feuille de calcul intégrée, pas même pour la feuille de calcul actuelle. Vous pouvez utiliser un script pour récupérer les noms de feuille et créer une formule automatiquement. Le script ci-dessous ajoute un élément de menu Importer> Toutes les feuilles au menu lorsque la feuille de calcul est ouverte. Lorsqu'il est appelé, il récupère les noms de feuille de la feuille de calcul avec l'URL contenue dans le script et place la formule complexe importrange dans la cellule A2 de la feuille en cours.

De plus, vous n'avez pas besoin de la formule matricielle devant {...;...}, et la requête avec select * ne fait rien d'utile.

function importall() {
  var url = 'https://docs.google.com/spreadsheets/d/...';  // put URL here
  var ss = SpreadsheetApp.openByUrl(url);
  var imports = ss.getSheets().map(function(s) {
    return 'importrange("' + url + '", "\'' + s.getName() + '\'!A2:Z")'; 
  });
  var formula = '={' + imports.join('; ') + '}';
  SpreadsheetApp.getActiveSheet().getRange("A2").setFormula(formula);
}

function onOpen() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu("Import", [{name: "all sheets of doc X",  functionName: "importall"}]);
}
1
user79865