我正在尝试在Google工作表中创建倒计时。基本上,当某个工作台发送请求并且看板工作表中的单元格公式更新时,我想要为其显示一个时间戳,并在Now()和该时间戳之间创建一个区别,以具有倒数计时器。这将允许我在此单元格上放置条件格式,以提醒操作员他们花了太长时间才能将材料送到某个区域。此代码用于初始设置时间戳脚本。
function onEdit(event)
{
var timezone = "GMT-5";
var timestamp_format = "MM-dd-yyyy"; // Timestamp Format.
var updateColName = "Email";
var timeStampColName = "Date Sent";
var sheet = event.source.getSheetByName('Sheet1'); //Name of the sheet where you want to run this script.
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
}
}
但我希望能够选择将更改为时间戳而不是最后一列的特定列。此外,我无法让它识别onchange事件而不是onedits。我有几个谷歌表绑在一起,脚本无法识别实际正在编辑的更新单元格。
我甚至尝试过其他类似的代码。
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
var r = s.getActiveCell();
if( r.getColumn() != 3 ) { //checks the column
var row = r.getRow();
var time = new Date();
time = Utilities.formatDate(time, "GMT-05", "MM/DD/yy, hh:mm:ss");
SpreadsheetApp.getActiveSheet().getRange('C' + row.toString()).setValue(time);
};
};
但是这仍然存在未注意到单元格中公式内的更改的问题。
答案 0 :(得分:0)
在对触发器进行进一步调查之后,我能够通过为更改创建事件触发器来确定脚本是否会运行。这么美好的事情!