更正时间戳脚本..快速Q.

时间:2015-03-09 02:24:47

标签: google-apps-script google-sheets timestamp

我对脚本非常陌生,所以我只是想让这个脚本适用于我的工作表。

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if( r.getColumn() == 5 ) { //checks the column
      var nextCell = r.offset(0, 1);
      if( nextCell.getValue() === '' ) //is empty?
        nextCell.setValue(new Date());
    }
  }
}

目前,如果将数据插入E,它似乎将在F列中输入时间戳。 我想要进入A的时间戳;而不是nextCell,与A列相对应的是什么?

感谢并抱歉新手问题!

更新

谢谢!这很有效,也有助于我的理解:)

如果我希望将其应用于多张,而不是全部。

我尝试添加额外的行,但它似乎没有用......我哪里出错了?

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "Sanshiro" ) { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if( r.getColumn() == 5 ) { //checks the column
      var nextCell = r.offset(0, -4);
      if( nextCell.getValue() === '' ) //is empty?
        nextCell.setValue(new Date());
    }
    if( s.getName() == "Josh" ) { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if( r.getColumn() == 5 ) { //checks the column
      var nextCell = r.offset(0, -4);
      if( nextCell.getValue() === '' ) //is empty?
        nextCell.setValue(new Date());
    }
      if( s.getName() == "Suil" ) { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if( r.getColumn() == 5 ) { //checks the column
      var nextCell = r.offset(0, -4);
      if( nextCell.getValue() === '' ) //is empty?
        nextCell.setValue(new Date());
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您的代码使用offset方法来获取要更新的单元格:

  

offset(rowOffset, columnOffset)

     

返回一个新范围,该范围偏离此范围的给定数字   行和列(可以是负数)。新的范围将是   与原始范围大小相同。

因此,如果你想在左边(列A)写下4列而不是向右写(列F),只需要替换这一行:

var nextCell = r.offset(0, 1);

使用:

var nextCell = r.offset(0, -4);

答案 1 :(得分:0)

function onEdit(e) {
var sheetName = 'Sheet1'; //name of the sheet the script should work on 
var colToWatch = 5 // watches for edits made in col E
if (e.range.columnStart !== colToWatch || e.source.getActiveSheet()
    .getName() !== sheetName) return;
e.range.offset(0, -4) //offset the currently edited cell by 0 rows, -4 columns 
    .setValue(e.value ? new Date() : null);
}

看看这对你有用吗?