【问题标题】:How to update the timstamp while choosing the same item in drop-down list in google sheet?如何在谷歌表格的下拉列表中选择相同项目时更新时间戳?
【发布时间】:2021-03-03 03:15:21
【问题描述】:

大家好,

我有一个脚本,当我在单元格B8 中选择Transfer 时,它能够在单元格C8 中打印当前时间戳。但是,当我第二次单击下拉列表中的Transfer 时,时间戳不会更新,因为单词仍然相同。我的代码附在下面:

function onEdit(e){
  const dt = Utilities.formatDate(new Date(), 'Asia/Singapore', 'HH:mm:ss');
  if (e.range.columnStart == 2 && e.range.rowStart >= 8) {
    if (e.value == 'Transfer') {
      e.range.offset(0, 1).setValue(dt);
    } else {
      e.range.offset(0, 1).setValue('');
    }
  }
}

我知道单元格B8 需要更改,以便OnEdit 函数将更改并打印当前时间戳。我也知道我可以在我的下拉列表和我的脚本中包含Transfer 1Transfer 2,但这不是一个理想的方式。即使我仍在下拉列表中选择Transfer,是否有任何方法可以更改时间戳?可能是其他类型的函数而不是OnEdit? 任何帮助将不胜感激!

【问题讨论】:

  • 虽然我不确定我是否能正确理解您的问题,例如,当const onSelectionChange = e => onEdit(e); 被放入脚本编辑器并测试您的情况时,这是您期望的结果吗? Ref
  • 嗨,参考,我可以知道要插入哪一行代码 const onSelectionChange = e => onEdit(e); 吗?抱歉,我对谷歌应用脚​​本很陌生。

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


【解决方案1】:

为什么不在脚本中的 }else{ 之前添加一个清除 B8 ?

即,之后:

e.range.offset(0, 1).setValue(dt);

...添加此行(为清楚起见,缩进与上述行相同的级别)...

e.range.clearContent();

【讨论】:

  • 您好 Erik,感谢您的解决方案。清除单元格B8 中的内容是个好主意。但是,整个 C 列将对用户隐藏,所以如果我清除单元格 B8,用户可能不知道他们是否已经转移了数据。
  • 或者是否可以设置一个时间,使其仅在 10 秒后清除内容?
  • 请记住,我们根本不了解您的应用程序或最终目标,因此很难提出最有意义的建议。我鼓励您研究如何使用 setTimeout。这可能会解决您的问题。由于该站点并非旨在提供免费的全面代码编写服务,因此我将留给您进行探索。希望这能让您更接近目标。
  • 您真的只需要在 onEdit 函数下方设置一个空函数(称之为“等待”),然后在 setTimeout 内调用该空函数,时间为 10000(毫秒),在 e.range.clearContent() 上面的行上。 (有了这个,虽然我没有准确地输入它,但你应该可以做到。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2020-12-01
  • 2012-04-21
  • 1970-01-01
相关资源
最近更新 更多