2013-02-13 108 views
1

我一直在试图获取谷歌电子表格时,另一个单元被编辑的数据自动添加到单元格被编辑一个单元格添加数据,但我只能似乎使onedit功能工作全球。要时自动另一个单元在谷歌电子表格

具体地,如果B2,B3,B4等被编辑的,我想N2,N3,N4等,以具有时间戳,或用户的名称自动填充。

任何帮助将不胜感激!

感谢

回答

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> 
} 
0

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

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

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

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

它通过指定列跟踪更改,然后分别创建的日期和时间的更新和正常运行时间列。

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); 
    } 
} 

希望这有助于人们。

相关问题