【问题标题】:Enter current date into a cell when another cell is changed当另一个单元格被更改时,在一个单元格中输入当前日期
【发布时间】:2014-08-13 11:41:02
【问题描述】:

我有一个 Google 电子表格,用于跟踪客户端为应用请求的配置信息的状态。例如。按钮上的文本。 我在顶部有一列带有“状态”的列,在下面的行中有带有“范围列表”数据验证的单元格。使用的范围有“与客户”、“与我”、“已完成”。我在右侧还有一列,用于手动添加上次状态更改的日期。我想要的是在我更改状态时自动将日期更改为今天的日期。我相信它可以用脚本来完成,但我以前从未使用过。

【问题讨论】:

  • 我也会用google-apps-script 标记它——我认为这就是你必须使用的。
  • 您可以查看此链接:developers.google.com/apps-script/understanding_triggers Google 电子表格确实支持每次编辑电子表格时执行的“编辑时”触发器。那将是一个很好的起点。此外,在您的电子表格中,转到“工具 > 脚本编辑器”将为您提供创建一个与电子表格一起运行的新应用程序的选项。该应用程序已经包含加载特定电子表格的代码,该电子表格在您单击“工具 > 脚本编辑器”时打开。

标签: google-apps-script google-sheets


【解决方案1】:

另一个答案从一个好主意开始,但不幸的是,建议的代码不起作用,因为它有很多基本错误(显然它没有经过测试......)

所以这是一个简单有效的版本:

function onEdit(e) {
  var sheet      = e.source.getActiveSheet();
  var activeCell = sheet.getActiveCell();
  var col        = activeCell.getColumn();
  var row        = activeCell.getRow();
  if (col == 2 ) { // assuming status is in column 2, adapt if needed
    sheet.getRange(row, col+1).setValue(new Date()).setNumberFormat('MMM dd yyyy');// change the display format to your preference here
  }
}

【讨论】:

  • 谢谢,这是一个非常好的解决方案。
  • 我将此添加到我的,以避免覆盖之前设置的日期:if (col == 1 && sheet.getRange(row, col+1).isBlank())。我不知道它是否是优雅的代码,但它可以工作。
  • 如何设置固定Sheet?我的工作表有很多选项卡,我想在特定选项卡中使用此代码...谢谢!
  • 只需在工作表名称上添加一个条件,如果名称与您想要的名称不匹配,则返回。使用 sheet.getName()
【解决方案2】:
     column 'Status'    column 'date'
row 'List from Range'   12-08-20014
row 'Data Validation'   -----------

范围 {'With client', 'With Me', 'Completed'}

好的,如果您打开脚本编辑器并添加以下代码,请将 BOLD TERMS 替换为相关值。 onEdit() 不需要触发器,因为它是一个“特殊”功能,除非您正在共享工作表并需要其他人以开发人员权限运行它。

onEdit() {
  var sheet      = e.source.getActiveSheet();
  var col        = activecell.getColumn();     //  numeric value of column, ColA = 1
  var row        = activecell.getRow();        //  numeric value of row
  if (col == PUT IN THE NUMBER OF YOUR COLUMN 'Status') {
    sheet.getRange(row, col+1) = Date();
}

【讨论】:

【解决方案3】:
function onEdit(e) {
   var sheet      = e.source.getActiveSheet();
   var activeCell = sheet.getActiveCell();
   var col        = activeCell.getColumn();
   var row        = activeCell.getRow();
   if (col == 2) {
     sheet.getRange(row, 1).setValue(new Date()).setNumberFormat('dd/MM/yyyy H:m:s');
  }
}

【讨论】:

  • 您可能需要解释您的答案,以便其他人从中学习。
  • 有人能告诉我如何为此添加时间吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多