web-dev-qa-db-fra.com

Obtenir des valeurs de colonne par nom de colonne et non par index de colonne

Je suis nouveau sur Google Apps Script. Je veux obtenir la valeur d'une cellule spécifique par son nom de colonne, pas son index. Voici ce que j'ai:

var rows = sheet.getDataRange();
var values = rows.getValues();
var row =values[1];
var rowStaffName = row[0];

À la place d'utiliser row[0], Je veux utiliser le nom de la colonne. Existe-t-il un moyen facile de le faire?

16
Kelli Roddy

La fonction suivante réessaye la valeur dans une colonne avec un nom donné, dans une ligne donnée.

function getByName(colName, row) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var col = data[0].indexOf(colName);
  if (col != -1) {
    return data[row-1][col];
  }
}

Plus précisément, var col = data[0].indexOf(colName); recherche le nom donné dans la ligne supérieure de la feuille. S'il est trouvé, la valeur dans la ligne donnée de cette colonne est retournée (row-1 Est utilisé pour tenir compte des index JavaScript basés sur 0).

Pour tester que cela fonctionne, essayez quelque chose comme

function test() {
  Logger.log(getByName('Price', 4)); // Or whatever name or row you want
} 
25
user3717023

On pourrait également avoir besoin d'une fonction qui renvoie la colonne entière d'un nom donné, pas seulement une seule cellule. Cette variation de l'autre réponse a bien fonctionné à cette fin:

function getByName(colName, sheetName) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var data = sheet.getRange("A1:1").getValues();
  var col = data[0].indexOf(colName);
  if (col != -1) {
    return sheet.getRange(2,col+1,sheet.getMaxRows()).getValues();
  }
}
2
Krastanov