If statement GoogleSheet脚本编辑器-带条件/if语句的OneEdit事件

If statement GoogleSheet脚本编辑器-带条件/if语句的OneEdit事件,if-statement,google-apps-script,If Statement,Google Apps Script,伙计们 我是这个网站的新手,也不擅长编码。所以我真的非常感谢你的帮助 现在,我需要一个特定的代码,使谷歌工作表完美地工作 进一步解释: 我有一个谷歌表格,其他同事会输入一些信息。我需要的是一个代码,它将在一个特定的单元格中注册日期,并由谁在另一个单元格中进行输入 到目前为止,这就是我所拥有的: function onEdit(event) { var sheet = event.source.getSheetByName("Input"); // Note: actRng = re

伙计们

我是这个网站的新手,也不擅长编码。所以我真的非常感谢你的帮助

现在,我需要一个特定的代码,使谷歌工作表完美地工作

进一步解释: 我有一个谷歌表格,其他同事会输入一些信息。我需要的是一个代码,它将在一个特定的单元格中注册日期,并由谁在另一个单元格中进行输入

到目前为止,这就是我所拥有的:

function onEdit(event) { 

  var sheet = event.source.getSheetByName("Input");

  // Note: actRng = return the last cell of the row modified
  var actRng = event.source.getActiveRange();
  var index = actRng.getRowIndex();
  var cindex = actRng.getColumnIndex();

  // Note: date = return date
  // Note: user = return the user email
  var userCell = sheet.getRange(index,14);
  var dateCell = sheet.getRange(index,2);
  var inputdate = Utilities.formatDate(new Date(), "GMT+0200", "yyyy-MM-dd");
  // Note(with hour): var inputdate = Utilities.formatDate(new Date(), "GMT+0200", "yy-MM-dd HH:mm");


  //var user = event.user;  // Note: event.user will not give you collaborator's Id
  var user = Session.getEffectiveUser();

  // Note: setValue = Insert in the cell the date when this row was modified
  if (userCell.Value == null) {
    userCell.setValue(user); 
    dateCell.setValue(inputdate)
  } 

}
我的主要问题是:

  • 我不需要最后一个修饰符,但需要第一个输入单元格信息的人。因此,我尝试了最后一个IF(如果应该包含最后一个修改器电子邮件的单元格为空,这意味着之前没有人更改该行,因此代码应该在userCell上添加用户),尽管它不起作用,因为我所做的每一次更改都会忽略验证

  • 我还想补充一点,只有在添加值时才会发生事件,如果删除值,则不会发生任何事情。(到目前为止,即使我删除单元格,也算作修改)

  • 大多数工作表都受到保护,以避免人们意外删除某些公式,因此此代码更改的单元格也受到保护。有没有办法使代码绕过单元保护


请帮我找出我做错了什么,希望我能让它完美地工作!谢谢你的帮助

如果要防止删除单元格时触发脚本,请尝试:

var editedCell = SpreadsheetApp.getActiveSheet().getRange(e.range.getRow(), e.range.getColumn());
if (editedCell == "") {
    return;
}
我会将Session.getEffectiveUser()更改为Session.getActiveUser()


最后一个if语句是不必要的。您希望识别最近编辑该字段的人以及日期。

如果要防止删除单元格时触发脚本,请尝试:

var editedCell = SpreadsheetApp.getActiveSheet().getRange(e.range.getRow(), e.range.getColumn());
if (editedCell == "") {
    return;
}
我会将Session.getEffectiveUser()更改为Session.getActiveUser()

最后一个if语句是不必要的。您希望识别最近编辑该字段的人以及日期