在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;
};
但是不幸的是,该代码无法正常工作!我不知道为什么!
答案 0 :(得分:1)
这不起作用,因为您正在将字符串与数组进行比较。 'getValues()'方法返回2D值数组。例如,如果标题为“ name”,它将返回
var values = range.getValues();
Logger.log(values); //[["name"]]
对 sheetColumnHeader 变量使用'getValue()'方法。