【发布时间】:2019-10-09 23:49:30
【问题描述】:
我想在特定条件下将时间戳写入不同的列。该函数应在范围内执行。我想使用第 13 行作为标题行。
它应该是这样工作的:
时间戳 1
如果在第 14 行的第 8 列或第 9 列中编辑单元格,则应在同一行的第 10 列中写入定义的时间戳(“HH:MM:SS”)。
时间戳 2
如果在第 14 行的第 16 列中编辑单元格,则应在同一行的第 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);
}
}
}
【问题讨论】:
-
能否分享电子表格的屏幕截图?
-
以上截图。
标签: google-apps-script google-sheets