根据另一列中字符串的数据查找行号

时间:2014-08-12 08:28:27

标签: javascript google-apps-script google-sheets

我有一张表,其中包含不同列中的一些用户详细信息,在最后一栏" G"我有一个唯一的ID,即字符串' UID'我想迭代每一行,直到找到G列中有UID的那一行,然后我需要它返回该用户的行号。

我已经选择了不同的教程和答案,并提出了以下内容。我已经尝试过调试,它会继续为行返回0.0。

有些用户没有唯一ID,可能是问题吗?

有什么想法吗?

var data = getQueryString("?"+claim_code);
var UID = data.uniqueid;
Logger.log(UID);

// Find out the row from the UID
var column = response.getRange('G:G');
var values = column.getValues();
var row = 0;
while ( values[row][0] == UID ) {
  row++;
Logger.log(row);
}

2 个答案:

答案 0 :(得分:0)

您只需对值进行操作并使用!= 因为这样,它会超过你的值,直到它找到你正在查看的行。 顺便说一句,您可能希望将范围限制为您拥有的特定行数。它将比当前G:G运行得更快,导致它在所有行上运行。 以下代码将为您找到值:

while ( values[row] != UID ) {
  row++;
  Logger.log(row); 
}

答案 1 :(得分:0)

您可以获取工作表的所有值,然后迭代每个值以查找您的值: 示例如下:https://docs.google.com/spreadsheets/d/1LGv_u_z_DuUpW01o8yMpHkceM3N45G3ruqQ8JtHkNEs

function find(){
  var idToFind = "A12347";
  var userRow = findID(idToFind);
  Logger.log(userRow);
}

function findID(userID) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var values = sheet.getSheetValues(2, 1, sheet.getLastRow()-1, sheet.getLastColumn());
  for(var x=1; x<values.length; x++){
    if(userID == values[x][6]){
      return x;
    }
  }
  return 0; // Error, not found userID
}