Comment puis-je appliquer un script à une seule feuille spécifique dans une feuille de calcul?


9

J'ai une feuille de calcul avec deux feuilles appelées Robinet Lucy. J'ai créé / trouvé / modifié un script pour trier les données sur la feuille chaque fois que j'ajoute des données à la colonne A:

function onEdit(event){

  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "a2:I30";
    if(editedCell.getColumn() == columnToSortBy){   
   var range = sheet.getRange(tableRange);
   range.sort( { column : columnToSortBy } );
  }
}

Ce script fonctionne bien , mais je veux que ce qu'elle soit appliquée sur la première feuille, Robin. Les données de la deuxième feuille,, Lucyne sont pas les mêmes, donc je vais créer un autre script pour une plage différente pour celle-ci, une fois que j'aurai compris ce problème.

Je pense que je dois utiliser le getSheetByName("Robin")mais je n'arrive pas à le faire fonctionner.

Réponses:


12

Il y a plusieurs façons de procéder. Tout d'abord, vous devez déclarer la feuille de calcul:

var ss = SpreadsheetApp.getActiveSpreadsheet();  

Deuxièmement, déclarez la première feuille comme ceci:

var sh0 = ss.getSheets()[0];

ou comme ça:

var sh0 = ss.getSheetByName("Robin");

Définissez ensuite la cellule active et récupérez l'index de colonne:

var editedCell = sh0.getActiveRange().getColumnIndex();

Et faites la logique du tri:

var columnToSortBy = 1;
var tableRange = "a2:I30";

if(editedCell == columnToSortBy){   
  var range = sheet.getRange(tableRange);
  range.sort( { column : columnToSortBy } );
}

Code complet, un peu raccourci:

function onEdit(){
  var sh0 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var editedCell = sh0.getActiveRange().getColumnIndex();

  if(editedCell == 1) { 
    var range = sh0.getRange("A2:I30");
    range.sort({column: 1});
  }
}

@oohrogerplamer Vous pouvez accepter la réponse en la marquant, voir cette zone de FAQ . Je vous en prie.
Jacob Jan Tuinstra

Comment puis-je faire cela pour trier par colonne, mais aussi pour trier les autres colonnes afin que toutes les données correspondent toujours dans les lignes?
moobot

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.