填写单元格时的自动时间戳

jto*_*n84 7 timestamp google-sheets google-apps-script

我有一个非常简单的excel公式,它可以工作,因为我可以限制递归迭代.我不是很精通脚本,但这就是它的功能.

=IF(D24="P",IF(E24="",DateStamp,E24),IF(D24="F",IF(E24="",DateStamp,E24),""))

它是通过/失败测试表,当有人通过或未通过测试时,它会添加时间戳.我们添加了一些人,我想将文档移动到谷歌应用程序,以允许超过1人同时处理它.

我遇到的唯一问题是这导致的循环引用.在excel中我可以限制选项中的迭代次数,我不再具备此功能.任何帮助都会很棒.

编辑:我试过的.我试图找到一种方法来输入一个同事为我创建的VBA脚本.我不熟悉脚本,所以我无法将其变成谷歌应用程序脚本:

VBA脚本:

    Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 4 Then
If Cells(Target.Row, 5).Value = "" Then

Cells(Target.Row, 5).Value = Now
End If
Else
End If


End Sub
Run Code Online (Sandbox Code Playgroud)

从理论上讲,我尝试创建一个脚本,该脚本将复制一个带有时间戳的单元格,然后尝试"粘贴特殊",然后将值粘贴到所需的单元格中.这可以工作,除了我无法找到粘贴谷歌应用程序脚本特殊的方法.

感谢您的任何帮助/编辑

Hen*_*reu 25

Stackoverflow是一个提出与编程相关的问题的地方,例如你实际上正在进行的工作.并不是真的要求其他人为你开发它,即你甚至还没有开始尝试任何Apps Script代码.我建议你阅读它的教程指南.这真的很容易开始.

无论如何,只是为了帮助你开始,我会放弃你说的所有内容并坚持问题标题:"填写单元格时的自动时间戳"

我建议你在应用程序脚本上完成所有操作,并完全放弃你的公式,例如

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if( r.getColumn() == 4 ) { //checks the column
      var nextCell = r.offset(0, 1);
      if( nextCell.getValue() === '' ) //is empty?
        nextCell.setValue(new Date());
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

此代码执行我从您的理解,即:如果在列上编辑了某些内容D并且列为E空,请将当前日期添加到E.