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.

oohrogerplamer
la source

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});
  }
}
Jacob Jan Tuinstra
la source
@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
1

Obtenez la feuille associée (feuille de calcul) et indiquez l'onglet (feuille) sur lequel vous souhaitez vous concentrer:

var theSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Robin");
// do the thing
var theSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Lucy"); 
// do the other thing

Référence: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getSheetByName(String)

Andy Roberts
la source