看板系统内的计时器

时间:2015-12-15 15:19:18

标签: javascript

我正在尝试在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);
  };
 };

但是这仍然存在未注意到单元格中公式内的更改的问题。

1 个答案:

答案 0 :(得分:0)

在对触发器进行进一步调查之后,我能够通过为更改创建事件触发器来确定脚本是否会运行。这么美好的事情!