开发者社区> 问答> 正文

如何设置关闭onEdit(e)函数的范围?

我想在特定条件下将时间戳记写入不同的列。该功能应在范围内执行。我想将第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();

我究竟做错了什么?

function onEdit(e) {

var timezone = "GMT+2"; var timestamp_format = "HH:mm:ss"; var updateColName = "Letzte Prüfung"; var updateColName1 = "Watchlist"; 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 = SpreadsheetApp.getActiveRange(); var editColumn = actRng.getColumn(); var index = actRng.getRowIndex(); var headers = sheet.getRange(13, 8).getValues(); 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(new Date(), timezone, timestamp_format); cell.setValue(date); }

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(new Date(), timezone, timestamp_format); cell.setValue(date); }

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); }

}

展开
收起
被纵养的懒猫 2019-10-09 16:55:58 425 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载