首页 > 解决方案 > 使用 getR(2,"firstname") 获取 Range

问题描述

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

示例数据:

1:名、姓
2:约翰、伯格
3:马克、托斯特

我期待以下内容:

getR(sheet, 2,"firstname") 然后应该给我: sheet.getRange(2, 1)

也许有可能让它写成: sheet.getR(2,"firstname")

我看到了以下优点:更容易理解,如果标题的布局颠倒了,它仍然有效。

我的原型:

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

标签: google-apps-script

解决方案


试试这个:

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

推荐阅读