通过使用getR(2,“ firstname”)获得一个Range

时间:2018-11-26 18:44:01

标签: google-apps-script

我想通过标题名称处理单元格。 例如。 getR(工作表,2,“名字”)

示例数据:

1:名字,姓氏
2:约翰·伯格
3:标记,tost

我期望以下情况:

getR(sheet,2,“名字”) 然后应该给我: 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 :(得分:1)

尝试一下:

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';
}