1

我一直在尝试让谷歌电子表格在编辑另一个单元格时自动将数据添加到一个单元格中,但是我似乎只能让 onedit 函数在全局范围内工作。

具体来说,如果编辑了 B2、B3、B4 等,我希望 N2、N3、N4 等自动填充时间戳或用户名。

任何帮助将不胜感激!

谢谢

4

2 回答 2

1

在这里扩展答案...

function onEdit(e)
{
  var row = e.range.getRow();
  var sheet = e.range.getSheet();

  //  if B2, B3, B4 etc. was edited, fill N2, N3, N4 etc. with a timestamp
  var value = new Date();
  // ... or the user's name. 
  // var value = Session.getActiveUser().getEmail();

  var headerRows = 1;  // # header rows to ignore

  // Skip header rows
  if (row <= headerRows) return;

  // We're only interested in column B (aka 2)
  if (e.range.getColumn() != 2) return;

  sheet.getRange(row,14).setValue(value); // N<row>
}
于 2013-12-03T22:11:22.167 回答
0

对于其他可能想要自动添加数据插入的日期和时间的人。

我刚遇到这个问题,我修改了Internet Geeks提供的代码。

他们的代码通过更新指定列来工作,时间戳被插入到另一个指定列的同一行中。

我改变的是我将日期和时间分开,因为时间戳是一个字符串,而不是日期格式。我的 was 对于生成图表很有用。

它的工作原理是指定要跟踪更改的列,然后分别为日期和时间创建 upDate 和 upTime 列。

function onEdit(event) {
  var timezone = "GMT+1";
  var date_format = "MM/dd/yyyy";
  var time_format = "hh:mm";

  var updateColName = "Резултат";

  var DateColName = "upDate";
  var TimeColName = "upTime";

  var sheet = event.source.getActiveSheet(); // All sheets
  // var sheet = event.source.getSheetByName('Test'); //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(DateColName);
  var timeCol = headers[0].indexOf(TimeColName);

  var updateCol = headers[0].indexOf(updateColName);
  updateCol = updateCol + 1;

  if (dateCol > -1 && timeCol > -1 && index > 1 && editColumn == updateCol) {
    // only timestamp if 'Last Updated' header exists, but not in the header row itself! 

    var cellDate = sheet.getRange(index, dateCol + 1);
    var cellTime = sheet.getRange(index, timeCol + 1);

    var date = Utilities.formatDate(new Date(), timezone, date_format);
    var time = Utilities.formatDate(new Date(), timezone, time_format);

    cellDate.setValue(date);
    cellTime.setValue(time);
  }
}

希望这对人们有所帮助。

于 2016-05-06T11:29:19.820 回答