首页 > 解决方案 > 需要为 Google 表格仪表板获取永久时间戳

问题描述

我正在尝试为谷歌表格中的活动构建仪表板,为此我有一个页面,学生可以在其中输入活动名称及其状态: 活动页面

我需要获取活动状态何时被修改的时间戳,女巫发生在另一个页面: 仪表板页面

我在哪里使用标志来锁定使用 now() 函数获取的时间和日期。问题是:每次页面更新时,我都会丢失时间戳。我怎样才能永久获得它?

标签: google-sheetstimestamp

解决方案


您可以使用Apps 脚本来实现您的目标:

  1. 使用onEdit
    触发器
    检查某个单元格何时被手动更改。
  2. 检查单元格是否来自列Status并获取行。
  3. 根据值在另一张表中写入时间戳Status

例如:

function onEdit(event){

  var editedSheet = event.source.getActiveSheet();
  var eRange = event.range;

  // If the name is Activities and the column edited is A
  if (editedSheet.getName() == "Activities" && eRange.getColumn() == 1){

    var sprsheet = SpreadsheetApp.getActiveSpreadsheet();
    var dashboard = sprsheet.getSheetByName("Dashboard");

    var dshbValues = dashboard.getRange("B1:L1").getValues(); //Values in Dashboard

    //Compare the value introduced with the Values in Dashboard   
    for (var i = 0; i < dshbValues[0].length; i++){

      //If they coincide, write the timestamp in the row edited, correspondent column
      if (eRange.getValue() == dshbValues[0][i]){

        var timestamp = new Date();

        dashboard.getRange(eRange.getRow(), i + 2).setValue(timestamp);

      }

    }

  }
}

考虑到您第一次需要手动运行脚本以提供所需的权限。此外,活动列 C 和仪表板列 A 中的值需要以相同的顺序排列以保持连贯性。

参考:


推荐阅读