получить диапазон с помощью getR (2, "firstname") - PullRequest
0 голосов
/ 26 ноября 2018

Я хотел бы обратиться к ячейкам через название заголовка.например. getR (лист, 2, «имя»)

пример данных:

1: имя, фамилия
2: Джон, Берг
3: знак, tost

Я ожидаю следующее:

getR (sheet, 2, "firstname") должно затем дать мне: sheet.getRange (2, 1)

Может быть, есть возможность заставить его написать: sheet.getR (2, "имя") ?

Я вижу следующие преимущества: легчепонять, и если расположение заголовков полностью изменено, оно все еще работает.

мой прототип:

function getR(sheet, name) { // https://gist.github.com/printminion/5520691

    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet);
    var range = ss.getRange(1, 1, 1, ss.getMaxColumns()).getValues()[0]; 
    Logger.log(range);
    for (var row in range) {
        Logger.log(range[row ]);
        if ( range[row ] == name ) {
            return parseInt(row ) + 1;
        }
    }
    throw 'failed';
}

1 Ответ

0 голосов
/ 26 ноября 2018

Попробуйте это:

function getR(row,sheet,headername){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName(sheet);
  var rg=sh.getDataRange();
  var nA=rg.getValues();
  for(var i=1;i<nA.length;i++){
    if(i+1==row){
      for(var j=0;j<nA[i].length;j++){
        if(nA[0][j]==headername){
          return nA[i][j];
        }
      }
    }
  }
  throw 'failed';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...