当一个或多个单元格在google工作表的一行中改变时的时间戳



我有这样的表格:https://docs.google.com/spreadsheets/d/1DwBP16AzO1vEow7K4NHsyDPTSxkteIo3RcivsG9hchY/edit gid = 1547957478

我试图把时间戳在列D ("更新"),但我想这时间戳,如果我对列B/C/D中的数据进行更改。目前,我有这个脚本,这是做什么我想要的,但只有列B -我已经尝试了几个不同的版本,让这个工作在所有3列,但我似乎不能得到它的工作。

function onEdit()
{
var sheet = SpreadsheetApp.getActiveSheet();
var capture = sheet.getActiveCell();
if (sheet.getName() == "Raw") //"order data" is the name of the sheet where you want to run this script.
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf("Updated") + 1;
var orderCol = headers[0].indexOf("What Do I Need To Travel") + 1;
if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
{
sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "GMT+4","MM-dd-yyyy hh:mm:ss"));
}
}
}

有什么建议吗?

您的方法可能可以简化如下。我包含了几个检查,比如只有一行正在编辑。您可以在if语句中看到条件。

/**
* @OnlyCurrentDoc
*/
function onEdit(e){
var capture = e.range;
const theDateColumn = 5;
var sheet = capture.getSheet();
var theColumn = capture.getColumn();
if (sheet.getName() == "Raw" && 
theColumn<theDateColumn && 
theColumn>1 && 
capture.getRow()==capture.getLastRow()){
var yourDate = new Date();
sheet.getRange(capture.getRow(), theDateColumn).setValue(Utilities.formatDate(yourDate, "GMT+4","MM-dd-yyyy hh:mm:ss"));
}
}

您在发布问题后插入了A列,对吗?

条件editColumn == orderCol限制仅当What Do I Need To Travel列时执行。

最新更新