如何根据单元格值查找特定的列索引

时间:2018-07-28 13:58:12

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

在Google表格中,我在一个电子表格文件中有两张名为STUDENTS和CLASSES的表格。它们每个都在某些列标题下包含大量数据行。

STUDENTS的列标题是CLASSES列标题的子集。

我希望我的GAS代码能够识别STUDENTS中的活动单元格,然后识别该活动单元格的列标题,然后转到CLASSES的列标题中找到该列标题,最后返回该标题中的列索引课程。

这是我编写的代码:

  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName('Students');
  var targetSheet = spreadsheet.getSheetByName('Classes');
  var sheetColumnIndex = sheet.getActiveCell().getColumnIndex();
  var sheetColumnHeader = sheet.getRange(1,sheetColumnIndex).getValues();

  var numRows = 1 // The column headers of CLASSES are available in 1 row
  var numColumns = 22 // The number of column headers in CLASSES;

  var searchRange = targetSheet.getRange(1,1,numRows, numColumns);
  // get the values in an array
  var values = searchRange.getValues();
  // examine the values in the array

  for (var y = 0; y < values.length; y++) {
     if(values[0][y] == sheetColumnHeader){

       var columnIndexInSourceSheet = y + 1;

     };
  };

  return columnIndexInSourceSheet;

};

但是不幸的是,该代码无法正常工作!我不知道为什么!

1 个答案:

答案 0 :(得分:1)

这不起作用,因为您正在将字符串与数组进行比较。 'getValues()'方法返回2D值数组。例如,如果标题为“ name”,它将返回

var values = range.getValues();
Logger.log(values); //[["name"]]

sheetColumnHeader 变量使用'getValue()'方法。