【问题标题】:Add timestamp in adjacent cell when cell equals a specific value当单元格等于特定值时,在相邻单元格中添加时间戳
【发布时间】:2013-01-18 00:23:15
【问题描述】:

我有一个项目跟踪工具。 K 列有一个任务完成时的下拉菜单。下拉菜单可以选择将任务设置为“未交付”或“已交付”。我想对 L 列进行编程,以便每当有人选择“已交付”任务时,我都有该操作的时间戳。任何帮助,将不胜感激。

【问题讨论】:

    标签: google-apps-script google-drive-api google-apps


    【解决方案1】:

    您可以使用附加到电子表格的脚本来执行此操作。如果您不熟悉电子表格中的 Google Apps-Script,请参阅 the tutorials。

    这是一张符合您所描述的电子表格的图片:

    下面的脚本将通过写入或清除 L 列中的时间戳来响应 K 列中的更改。由于电子表格中的每次更改都会调用它,因此它首先会检查是否发生了我们关心的更改,并且否则退出。

    /**
     * This function is an auto-trigger, because of its name. It will be
     * invoked on every change in the spreadsheet. The only change that
     * we're interested in is in Column K, and we want to put a timestamp
     * into Column L if the value selected for Column K is "Completed".
     */
    function onEdit(event){
      var ColK = 11;  // Column Number of "K"
    
      var changedRange = event.source.getActiveRange();
      if (changedRange.getColumn() == ColK) {
        // An edit has occurred in Column K
        var state = changedRange.getValue();
        var adjacent = event.source.getActiveSheet().getRange(changedRange.getRow(),ColK+1);
        var timestamp = new Date(); // Get the current time
        // We'll do something different, depending on the selected value
        switch (state) {
          case "Completed":
            // Write timestamp into adjacent cell
            adjacent.setValue(timestamp);
            break;
          case "Not Completed":
            // Erase timestamp in adjacent cell
            adjacent.clearContent();
            break;
          default:
            // Something we didn't expect
            adjacent.setValue("*ERROR*");
            break
        }
      }
    }
    

    待办事项:此脚本假定您只更改了一个单元格,这意味着无法正确处理将值复制到多个单元格。

    【讨论】:

    • 你将如何使用它而不是“完成”单元格从空白/空变为填充以创建时间戳。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多