2013-09-25 6 views
0

Я работаю с этим кодом в настоящее время, но это не так просто, как я предполагаю, что это может быть:Как получить диапазон столбцов в нотации A1 из метки заголовка?

var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
var comCol = headers[0].indexOf('Header Label'); 

rng = sheet.getRange(1, comCol + 1); 

var colStr = rng.getA1Notation(); 
var colLtr = colStr.charAt(0); 
//Logger.log(colLtr+":"+colLtr); Should output something like "P:P" 
var range = ss.getSheets()[0].getRange(colLtr+":"+colLtr); 

Я выбрать первую строку, создавая массив значений, & поиск этого массива довольно просто. Часть, которую я считаю неуклюжей, составляет целый диапазон столбцов. В нотации A1 это выглядит как «A: A».

Возможно, я слишком задумываюсь о том, что должна быть функция lookupCol(String), или даже функция getRangeOfCol(Index).

+0

Ваш код выглядит нормально, но можете ли вы привести пример того, какой результат вы ожидаете. В настоящее время, если ваш лист имеет текст «Заголовок заголовка» в столбце D, он будет возвращать диапазон D: D на другом листе. – Srik

+0

Этот код в настоящее время производит вывод, который я хочу. Если «Ярлык заголовка» является ярлыком для столбца D, то полученный диапазон действительно D: D, я просто подумал, что этот текущий код был немного запутанным и излишне сложным. –

ответ

1

Попробуйте что-то вроде этого

var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
var comCol = headers[0].indexOf('Header Label'); 
var comLtr= String.fromCharCode(65 + comCol); 
var range = ss.getSheets()[0].getRange(comLtr +":"+colLtr); 
+1

'String.fromCharCode (65 + comCol);' будет работать только для первых 26 столбцов (A ... Z), а не для последующих (AA..ZZ) – farialima

0

Для обеспечения столбцов АА и за ее пределами, с предположением, метка заголовка находится в строке 1, я изменил линию, образующую colLtr к:

var colLtr = colStr.substr(0, colStr.indexOf('1')); 
Смежные вопросы