Fonction IMPORTRANGE - limitation des importations

Bonjour. Je dispose d'une feuille de calcul comportant environ 50 feuillets contenant des données. C'est mon fichier source. D'autres feuille de calcul importent ces données au moyen de la fonction IMPORTRANGE. Ces importations sont nombreuses mais fonctionnent rarement simultanément. Alors que tout fonctionne normalement depuis des années, je reçois aujourd'hui le message "vous avez atteint le nombre maximal de partages et d'importations de la feuille de calcul source". Quelles sont les solutions? éliminer les feuilles anciennes qui n'utilisent pas effectivement les autorisations d'importation créées (déjà essayé sur 3 ou 4 feuilles mais pas de résultat) Scinder la feuille source? autre?. Merci de votre aide. YN

Bonjour,

J'ai répondu à ce genre de problématique par l'export d'un JSON mais c'est assez chiant à mettre en place, en gros, comment fonctionne ton fichier ?

c'est une simple feuille de calcul GOOGLE SPREADSHEET (on va l'appeler source) qui fonctionne un peu comme une base de données. Cette feuille de calcul comporte environ 30 feuillets constitués d'IMPORTRANGE de GOOGLE SPREADSHEET constituant le résultat de formulaires. La feuille de calcul source est interrogée (ou importée) par d'autres feuilles de calcul. J'espère être clair...

En effet, dans Google Sheets la limite est de 50 références ImportRange par fichier.

Dans une premier, si possible tu peux simplifier, regrouper des données (cf explications ici: https://support.google.com/docs/answer/3093340?hl=fr#zippy=%2Cd%C3%A9tails-techniques-et-bonnes-prat...)

Si vraiment tu souhaites continuer sur le même fonctionnement, voici un script permettant d'exporter une feuille sheet au format JSON :

function exportToJson() {
  var sheet = SpreadsheetApp.openByUrl('url du fichier sheet').getSheetByName('nom de la feuille'); // fichier & feuille origine
  var range = sheet.getDataRange();
  var values = range.getValues();
  Logger.log(values)
  var jsonData = [];

  // Construire les données JSON
  for (var i = 0; i < values.length; i++) {
    var row = values[i];
    var rowData = {};
    for (var j = 0; j < row.length; j++) {
      var header = values[0][j]; // entête de la feuille ! A MODIFIER ! dans cet exemple 0 = 1ère ligne 
      rowData[header] = row[j];
    }
    jsonData.push(rowData);
  }

  var jsonString = JSON.stringify(jsonData, null, 2); // édition du JSON
  var folder = DriveApp.getFolderById('ID du dossier DRIVE'); // dossier cible
  var fileName = 'nom du fichier.json'; // A MODIFIER
  var files = folder.getFilesByName(fileName);

  if (files.hasNext()) { // si fichier JSON existe déjà, supprimer les données et inserer nouvelles
    var file = files.next();
    var existingJsonString = file.getBlob().getDataAsString();
    var existingData = JSON.stringify(existingJsonString);
    existingData = []; // Supprimer les données existantes
    jsonString = JSON.stringify(existingData.concat(jsonData), null, 2); // Concaténer les nouvelles données avec les anciennes (vide) et convertir en JSON
    file.setContent(jsonString); // Écraser le fichier JSON existant avec les nouvelles données
  } else {
    folder.createFile(fileName, jsonString, MimeType.PLAIN_TEXT); // si pas de fichier JSON, le créer
  }
}

Enusite pour importer les données :

function importFromJson() {
  var fileId = '1WYCnkwCYAdvXwe33dNkf_k4Z'; // ID du fichier (clic droit > partager puis copier l'ID dans l'URL)
  var file = DriveApp.getFileById(fileId);
  var jsonString = file.getBlob().getDataAsString();
  var jsonData = JSON.parse(jsonString); // conversion JSON > STRING
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // dans ce cas active sheet mais sheet peut être définie
  var dataRows = [];
  sheet.clear(); // au cas où
  var headers = Object.keys(jsonData[0]); // en-tête du fichier JSON cf export, dans ce exemple 1ère ligne
  sheet.appendRow(headers); // on ajoutes les en-têtes à la feuille
  for (var i = 0; i < jsonData.length; i++) { // stockage des data dans une variable
    var row = [];
      for (var j = 0; j < headers.length; j++) {
        row.push(jsonData[i][headers[j]]);}
    dataRows.push(row);
}
  sheet.getRange(2, 1, dataRows.length, dataRows[0].length).setValues(dataRows); // insertion de la variable data dans la feuille

}

Bonjour

Merci pour toutes ces infos.

"En effet, dans Google Sheets la limite est de 50 références ImportRange par fichier." je comprends que 1 fichier peux contenir au max 50 formules ImportRange à extraire. C'est une info très utile. Mais mon souci semble être le nombre au niveau de la feuille source (capacité à être extraite par d'autres fichiers).

Merci pour les solutions proposées. Je vais effectivement essayer de simplifier car la solution JSON me parait très complexe.

Bonne journée.

Rechercher des sujets similaires à "fonction importrange limitation importations"