【问题标题】:Google Sheets auto populate timestamp in a cell when a particular value is entered in any other cell当在任何其他单元格中输入特定值时,Google 表格会自动在单元格中填充时间戳
【发布时间】:2020-05-13 16:19:29
【问题描述】:

我在 Google 表格中使用工作跟踪器。我有从 A 到 U 的列。我在“L”列中有“状态”,带有下拉选项 - 查询状态待定、核对完成、等待 IM 响应。当我将状态设置为“查询状态待定”时,我希望将时间戳填充在“N”列中,并且它应该是静态的。同样明智 - 对于 Reconciliation Done,时间戳应位于“E”列中。对于“等待 IM 响应”状态,时间戳应位于“R”列中。所有时间戳都应该是静态的

【问题讨论】:

    标签: google-apps-script google-sheets timestamp


    【解决方案1】:

    在编辑事件中插入时间戳的最佳方法是Google Apps Script

    Apps Script 为work with Google spreadsheets 提供了许多有用的功能。它还包含triggersonEdit 一样,当在您的电子表格中进行编辑时触发并允许您检索event objects(用于确定例如已编辑的列)。熟悉 Apps Script 最好的方法是关注官方tutorial

    如何在 Apps 脚本中实现您的请求:

    1. Tools -> Script editor 上的电子表格转到
    2. 在下面粘贴脚本
    3. 保存脚本并点击“播放按钮”(运行脚本)
    4. 忽略您收到的错误消息。您的脚本现在可以正常工作了。
    function onEdit(e) {
      var range = e.range;
      var column = range.getColumn();
      Logger.log('edited');
      if (column == 12){
        var timestamp = new Date();
        var row = range.getRow();
        var value = e.value;
        var sheet = e.source.getActiveSheet();
        Logger.log("edited cell: "+range.getA1Notation());
        if( value == "Inquiry Status Pending"){
          sheet.getRange(row, 14).setValue(timestamp);
        } else if(value == "Reconciliation Done"){
          sheet.getRange(row, 5).setValue(timestamp);
        } else if(value == "Waiting for IM Response"){
          sheet.getRange(row, 18).setValue(timestamp);
        }
      }
    }
    

    我建议您花一些时间研究 Apps 脚本,以便了解所提供代码的工作原理并根据您的需要进行调整。

    【讨论】:

    • 感谢您的回复。我收到错误消息“TypeError:无法读取未定义的属性“范围”(第 2 行,文件“代码”)”
    • 如第 4 点所述。:忽略此错误消息 :-) 这是由于如果您手动运行脚本,事件对象 e 未定义。无论如何,您的脚本都可以运行 - 通过更改状态列中的值来尝试一下!
    • 很高兴听到这个消息!
    猜你喜欢
    • 2019-07-26
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2015-10-15
    相关资源
    最近更新 更多