Вы можете получить значение ячейки заголовка этого столбца и сравнить значение с тем, что вы ищете, используя sheet.getRange(rangeOfHeaderCell).getValue()==='desired column heading')
.Например:
if (sheet.getRange(1, selectedCell.getColumn(), 1, 1).getValue() == 'Hello World') {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION2[0], DATETIMELOCATION2[1]);
dateTimeCell.setValue(new Date());
}
Вы также можете легко превратить это в функцию:
function getColumnHeading(sheet,columnIndex){
return sheet.getRange(1,columnIndex,1,1).getValue();
}
Чтобы получить столбец по имени заголовка вместо смещения, это немного сложнее, ноЯ придумал простую функцию, которая перебирает доступные столбцы.Здесь все собрано и немного переработано:
var SHEETNAME = 'OrderList';
var EMAIL_COLUMN_NAME = 'Email Stamp';
var TIMESTAMP_COLUMN_NAME = 'Time Stamp';
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
if (sheet.getSheetName() == SHEETNAME) {
// Lookup columns
var emailColumn = getColumnByHeader(EMAIL_COLUMN_NAME, sheet);
var timestampColumn = getColumnByHeader(TIMESTAMP_COLUMN_NAME, sheet);
// Get active cell details
var selectedCell = ss.getActiveCell();
var selectedColumnName = getColumnHeading(sheet,selectedCell.getColumn());
// Set values in corresponding columns
if (selectedColumnName == 'My Special Column') {
var email = Session.getActiveUser().getEmail();
if (timestampColumn) {
sheet.getRange(selectedCell.getRow(), timestampColumn, 1, 1).setValue(new Date());
}
if (emailColumn){
sheet.getRange(selectedCell.getRow(),emailColumn,1,1).setValue(email);
}
}
else if (selectedColumnName == 'Hello World') {
if (timestampColumn) {
sheet.getRange(selectedCell.getRow(), timestampColumn, 1, 1).setValue(new Date());
}
}
}
}
function getColumnByHeader(headerName, sheet, rowIndex) {
rowIndex = typeof (rowIndex) !== 'undefined' ? rowIndex : 1;
// Get full range of header row
var headerRange = sheet.getRange(rowIndex, 1, 1, sheet.getDataRange().getLastColumn());
var headerValues = headerRange.getValues()[0];
for (var x = 0; x < headerValues.length; x++) {
if (headerValues[x] == headerName) {
return x + 1;
}
}
return false;
}
function getColumnHeading(sheet, columnIndex) {
return sheet.getRange(1, columnIndex, 1, 1).getValue();
}