【问题标题】:Google Sheets Timestamp onEdit Range Issue编辑范围问题上的 Google 表格时间戳
【发布时间】:2014-12-19 20:47:43
【问题描述】:

我一直在处理包含多张工作表的 Google 电子表格,我目前的目标是能够在将出现在列 (例如,如果编辑的单元格是 A1,则时间戳出现在单元格旁边的 B1) 中。通过将我在这里找到的脚本推到一起,我已经取得了不同程度的成功,希望它们能玩得很好。目前我让它按我想要的方式工作......

但是如果我在 B1 中删除新创建的时间戳,那么它将在 C1 中生成一个新时间戳,如果我删除 C1,那么它会出现在 D1 中,依此类推。有没有办法防止在删除单元格内容时产生时间戳?

function onEdit(e) {
    var s = SpreadsheetApp.getActiveSheet();
    var cols = [1, 3, 5]
    if (s.getName() == "Sheet1")
    s.getRange(e.range.rowStart, e.range.columnStart + 1)
    .setValue(new Date());

    if (s.getName() == "Sheet2")
    s.getRange(e.range.rowStart, e.range.columnStart + 1)
    .setValue(new Date());
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    它正在传播,因为您编写了 e.range.coloumnStart + 1。因此,一旦您删除任何单元格的值,就会触发 onEdit()。这样该单元格将被计为第一列,它将相对更新下一个单元格的值。要在删除发生时停止传播到下一个单元格,您不应该在删除时更新下一个单元格值。

    要做到这一点,您可以按照以下方式进行,(我不知道您的确切要求是什么,但此代码将适用于您当前的要求)

    function onEdit(e) {
        var s = SpreadsheetApp.getActiveSheet();
        var cols = [1, 3, 5];
        if (s.getName() == "Sheet3" && e.range.getValue() != '')
          s.getRange(e.range.rowStart, e.range.columnStart+1).setValue(new Date());
    
    
        if (s.getName() == "Sheet4" && e.range.getValue() != '')
          s.getRange(e.range.rowStart, e.range.columnStart+1).setValue(new Date());
    }
    

    【讨论】:

    • 太棒了!感谢您的详细解释。我现在明白发生了什么!非常感谢您的帮助,该脚本以我试图实现的确切方式工作!
    【解决方案2】:

    或者,您也可以尝试:

    function onEdit(e) {
    var s = e.source.getActiveSheet().getName();
    var cols = [1, 3, 5];
    if (s !== 'Sheet1' && s !== 'Sheet2' || cols.indexOf(e.range.columnStart) ==-1 || !e.value) return;
    e.range.offset(0,1).setValue(new Date());
    }
    

    我假设您想将标记限制在第 2、4 和 6 列(所以要在第 1、3 和 5 列中进行编辑?) 如果没有,您可以删除 'var cols' 和 'cols.indexOf..'-part

    【讨论】:

    • 也感谢您的意见!你的假设是正确的,这就是我的意图。我也试了一下你的脚本!它也很完美!现在我有比我需要的更多的脚本:) 并且已经学会了两种方法来蒙皮这个时间戳!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2020-07-14
    • 2012-08-06
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多