Я хотел бы написать временную метку для разных столбцов при определенных условиях. Функция должна быть выполнена в пределах диапазона. Я хотел бы использовать строку 13 в качестве строки заголовка.
Вот как это должно работать:
Отметка времени 1
Если ячейки редактируются в столбце 8 или 9 строки 14, указывается определенная отметка времени («ЧЧ: ММ»: SS ") должен быть записан в столбце 10 в той же строке.
Отметка времени 2
Если ячейки редактируются в столбце 16 из строки 14, отметка времени должна быть записана в столбце18 в той же строке.
Для этого я использую приведенный ниже код. К сожалению, это не работает.
Если я расширяю диапазон на всю таблицу, запишите заголовки столбцов (см .: updateColName, timeStampColName) в первой строке и определите переменную «Header» следующим образом, а затем кодработает.
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
Что я делаю не так?
Ссылка на публичную версию с уменьшенными строками листа.
https://docs.google.com/spreadsheets/d/1otiQjBbQBUhAlULau0FR3wQYT0jvm8jJLNqnGYNMBoY/edit?usp=sharing
function onEdit(e)
{
var timezone = "GMT+2";
var timestamp_format = "HH:mm:ss";
var updateColName = "Watchlist";
var updateColName1 = "Letzte Prüfung";
var updateColName2 = "Entry Datum";
var timeStampColName = "Letzte Änderung";
var timeStampColName1 = "Letzte Änderung 2";
var now = new Date()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Tickerprüfung');
var actRng = e.range;
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
if (index>13) {
var headers = sheet.getRange(13, 1, 1, sheet.getLastColumn());
//Checks if column I has been edited and then writes a timestamp to column K in the same line
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(now, timezone, timestamp_format);
cell.setValue(date);
}
//Checks if column J has been edited and then writes a timestamp to column K in the same line
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName1); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(now, timezone, timestamp_format);
cell.setValue(date);
}
//Checks if column Q has been edited and then writes a timestamp to column S in the same line
var dateCol = headers[0].indexOf(timeStampColName1);
var updateCol = headers[0].indexOf(updateColName2); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol + 1);
cell.setValue(now);
}
}
}