如何将值设置为非空单元格

时间:2014-12-18 15:48:02

标签: google-apps-script google-docs

嗨我正在尝试在编辑另一个单元格时更改单元格值。它实际上有效,但只有当我想写入的单元格为空时。这是代码:

function onEdit(e){
  var sheet = SpreadsheetApp.getActiveSheet();
  var sheetName = sheet.getName();

  if (sheetName == 'Functional Tests') {
    Logger.log('You are in Functional Tests');

    var activeCell = sheet.getActiveCell();
    Logger.log('Active cell: ' + activeCell.getColumn());

    if ( activeCell.getColumn() == 5) {
      Logger.log('Your are working on result column');

      var rowIndex = activeCell.getRowIndex();

      var resultRange = sheet.getRange("E:E");
      var resultCol = 6; //resultRange.getColumn();
      var resultCell = sheet.getRange(rowIndex, resultCol);

      Logger.log('Row index: ' + rowIndex + ' Result col: ' + resultCol);

      var date = Utilities.formatDate(new Date(), 'GMT+1', 'dd/MM/yyyy  HH:mm');
      resultCell.setValue(date);

    }
  }
}

有人知道如何解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我无法重现您的问题。但是你可以消除对电子表格的大部分调用(getColumn,getActiveCell,..),因为所有这些调用都已作为eventobject(e)的参数传入。所以这样的事情应该(也)起作用:

function onEdit(e) {
if(e.source.getActiveSheet().getName() !== 'Functional Tests' || 
e.range.columnStart !== 5) return;
e.range.offset(0, 1).setValue(Utilities.formatDate(new Date(), 'GMT+1', 'dd/MM/yyyy  HH:mm'))
}

也许你知道时间戳没有更新,因为你没有在formatDate中使用秒?因此,分钟内的变化不会以这种方式反映出来。您可以通过格式化检查为HH:mm:ss,然后查看它是否发生变化..?