我有一张包含10张的电子表格,有15位用户登录并修改它。
当有人修改任何列中的任何行时,此脚本将使用DateTime更新lastcolumn并向进行该修改的用户插入注释。
(1)性能问题:此脚本在用户修改任何列时运行。这可能是因为我有更多> 3个用户登录电子表格慢慢转动保存。
(2)只有在修改某些特定列时才应运行此脚本。对于ej。:如果活动用户修改列A,B,C; D,E&我脚本用Date& Time更新lastcolumn J;但如果activeuser修改了列F,G,H,则不应运行脚本。
(1)这个脚本运行OnEdit非常好,但是当有人修改任何列中的任何内容时,它会更新lastcoulmn。
如果有人可以帮我修改此脚本,仅在修改特定列时运行,我将不胜感激。
function onEdit(event)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Script Last Update Timming
var actSht = event.source.getActiveSheet();
var actRng = event.source.getActiveRange();
var index = actRng.getRowIndex();
var dateCol = actSht.getLastColumn();
var lastCell = actSht.getRange(index,dateCol);
var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
// Note: Insert the Date when someone update the row in the last coulmn
lastCell.setValue(date);
// Nota: Insert a comment in the lastCell with the user who modify that row
lastCell.setComment(Session.getEffectiveUser());
}
答案 0 :(得分:3)
您可以使用下面的代码检查活动行和活动列,然后根据标识的行,列,您可以继续进行。
var activeCell = sheet.getActiveCell();
var row = activeCell.getRow();
var column = activeCell.getColumn();
你的整体代码看起来像这样。
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Script Last Update Timming
var actSht = event.source.getActiveSheet();
var actRng = event.source.getActiveRange();
var activeCell = actSht.getActiveCell();
var row = activeCell.getRow();
var column = activeCell.getColumn();
if(row < 2) return; //If header row then return
var colNums = [1, 5, 6, 7]; //Coulmns, whose edit is considered
if(colNums.indexOf(column) == -1) return; //If column other than considered then return
var index = actRng.getRowIndex();
var dateCol = actSht.getLastColumn();
var lastCell = actSht.getRange(index,dateCol);
var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
// Note: Insert the Date when someone update the row in the last coulmn
lastCell.setValue(date);
// Nota: Insert a comment in the lastCell with the user who modify that row
lastCell.setComment(Session.getEffectiveUser());
}