web-dev-qa-db-fra.com

Rechercher une feuille de calcul par colonne, renvoyer des lignes

J'essaie de trouver le meilleur script en termes d'exécution pour terminer une tâche. J'ai une feuille de calcul assez grande où je dois vérifier les valeurs dans certaines colonnes connues, et selon un cas de correspondance, il renvoie cette ligne. Idéalement, je voudrais une nouvelle feuille de calcul contenant les lignes renvoyées.

J'ai la feuille de calcul ouverte par ID et j'ai la feuille et la plage, mais je ne suis pas sûr du moyen le plus efficace de rechercher dans les colonnes spécifiques et de saisir non seulement cette valeur, mais toute la ligne.

13
Henry David

Vous pouvez utiliser le code ci-dessous pour rechercher dans une colonne spécifique. Le code est explicite.

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "Search", functionName: "onSearch"} ];
  ss.addMenu("Commands", menuEntries);    
}

function onSearch()
{
    var searchString = "Test11";
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SheetName"); 
    var column =4; //column Index   
    var columnValues = sheet.getRange(2, column, sheet.getLastRow()).getValues(); //1st is header row
    var searchResult = columnValues.findIndex(searchString); //Row Index - 2

    if(searchResult != -1)
    {
        //searchResult + 2 is row index.
        SpreadsheetApp.getActiveSpreadsheet().setActiveRange(sheet.getRange(searchResult + 2, 1))
    }
}

Array.prototype.findIndex = function(search){
  if(search == "") return false;
  for (var i=0; i<this.length; i++)
    if (this[i] == search) return i;

  return -1;
} 
44
Aseem Gautam

Vous souhaiterez peut-être utiliser la classe Google Apps Script textFinder .

Cet exemple de fonction va rechercher une chaîne et afficher la ligne de la première occurrence dans une boîte de dialogue d'alerte:

function searchString(){
  var sheet = SpreadsheetApp.getActiveSheet()
  var search_string = "dog"
  var textFinder = sheet.createTextFinder(search_string)
  var search_row = textFinder.findNext().getRow()
  var ui = SpreadsheetApp.getUi();
  ui.alert("search row: " + search_row)
}
7
Jéter Silveira