web-dev-qa-db-fra.com

Remplir - Script Google Apps pour les feuilles de calcul

Existe-t-il une fonction qui peut remplir les données de toutes les cellules vides de la ligne ci-dessus?

Sinon, quelqu'un pourrait-il m'aider avec un script Google Apps (ou une autre solution) qui peut parcourir chaque ligne de ma feuille de calcul Google, vérifier les cellules vides et, si trouvé, les remplir avec les données de la ligne ci-dessus?

Une telle fonction devrait déjà être incluse dans un tableur, je pense (et "remplir" également).

Je vous remercie!

21
Mille

Une telle fonction devrait déjà être incluse dans un tableur, je pense (et "remplir" également).

Je vais essayer de décrire la fonctionnalité native dans GSheets à ce sujet.

  1. Si vous double-cliquez sur le petit carré bleu en bas à droite d'une cellule ou d'une plage sélectionnée, cela remplira automatiquement cette cellule jusqu'à la fin d'un bloc de cellules peuplées sur la gauche. Alternativement, vous pouvez simplement faire glisser cette petite boîte bleue (bas, haut, gauche ou droite) pour le remplissage automatique.

  2. Vous pouvez sélectionner la cellule source et les cellules en dessous (reportez-vous au point 4), puis appuyez sur Ctrl+Enter, pour remplir. Vous pouvez aussi utiliser Ctrl+Enter ou Ctrl+R pour remplir à droite.

  3. Vous pouvez sélectionner la cellule source, appuyez sur Ctrl+C pour copier, puis sélectionnez les cellules ci-dessus (ou vers la gauche - et reportez-vous à nouveau au point 4), puis appuyez sur Ctrl+V coller. Cela a pour effet de se remplir (ou de gauche).

  4. Vous pouvez sélectionner rapidement des cellules vides sous (ou sur, ou à droite ou à gauche de) la cellule source en appuyant sur Ctrl+Shift+Down (ou Haut, ou Droite, ou Gauche). Cela vous amènera à la limite de la feuille ou à la cellule remplie suivante. Si ce dernier, vous pouvez alors appuyer sur Shift+Up (ou Bas, ou Gauche, ou Droite) pour revenir à la dernière cellule vide. Et puis remplissez comme requis selon les points 2 et 3.

  5. Vous devrez effectuer cette opération pour chaque groupe non contigu de cellules vides. Si vous voulez pouvoir remplir rapidement automatiquement des groupes non contigus de cellules vides, alors oui, un script serait nécessaire.

47
AdamL

Utilisez copyTo . Je vais surtout adapter la réponse que j'ai trouvée à ce sujet ici:

  var sheet = SpreadsheetApp.getActiveSheet();
  var originRange = sheet.getRange("A1:B1");
  var target = sheet.getRange("A2:B");
  originRange.copyTo(target);

Cela remplira/étendra automatiquement les formules dans originRange à tout ce qui suit, comme pour le copier-coller.

9
cregox

Voici un script de travail qui ajoute un menu personnalisé à votre feuille Google. Chargez le script pour une feuille Google, sélectionnez une plage sur la feuille et sélectionnez "Remplir les cellules vides" dans le menu personnalisé. Les cellules vides seront remplies avec la valeur de la cellule ci-dessus.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Fill Blank Cells', 'menuItem1')
      .addToUi();
}

function menuItem1() {
  fillBlankWithAbove()
}

//Iterates over the range from top to bottom
//and left to right, and fills blank cells 
//with the value right above them.
function fillBlankWithAbove() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveRange();
  Logger.log('Range height is: ' + range.getHeight());
  var values = range.getValues();

  var width = values[0].length;
  var height = values.length;
  Logger.log('Width is ' + width);
  Logger.log('Height is ' + height);

  for (var i = 0; i < width; i++) {
    var lastVal = '';
    for(var j = 0; j < height; j++) {   
      var currValue = values[j][i];

      var dataType = typeof(currValue);
      //Empty string check returns true if dataType
      //is a number, and value is zero.  In that case
      //we don't want to overwrite the zero, so only
      //check emptyString for string types.
      if(currValue === undefined || 
         (dataType === 'string' && currValue == '')
        )  {
        //getCell parameters are relative to the current range
        //and ones based
         var cell = range.getCell(j+1, i+1);
         cell.setValue(lastVal);

      }
      else {
        lastVal = currValue;
      }
    }
  }
  SpreadsheetApp.flush();
}
4
lreeder
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Name");
var formulas = sheet.getRange(10, 1, 1, 10).getFormulasR1C1();
var newRange = sheet.getRange(11, 1, 1, 10);
newRange.setFormulasR1C1(formulas);

Utilisation de getFormulasR1C1 () puis de setFormulasR1C1 (formules) Cette fonction imite le glissement de la formule par la souris

Veuillez noter que si la cellule ne contient pas de formule, elle affichera une erreur. Vous devrez contourner ce problème en vidant les cellules.

3
Cvetko Stavreski