我一直在尝试使用谷歌电子表格在编辑另一个单元格时自动将数据添加到单元格中,但是我似乎只能使onedit函数全局工作。
具体来说,如果编辑了B2,B3,B4等,我想N2,N3,N4等自动填写时间戳或用户名。
非常感谢任何帮助!
谢谢
答案 0 :(得分:1)
扩展答案here ...
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>
}
答案 1 :(得分:0)
对于可能希望自动添加数据插入日期和时间的其他人。
我刚遇到此问题,并修改了Internet Geeks提供的代码。
他们的代码通过更新指定的列来工作,时间戳插入另一个指定列的同一行。
我更改的是我将日期和时间分开,因为时间戳是字符串,而不是日期格式。我对生成图表非常有用。
它的工作原理是指定要跟踪更改的列,然后分别为日期和时间创建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);
}
}
希望这有助于人们。