【问题标题】:TimeStamp in Google sheet are keeping updated everyday谷歌表中的时间戳每天都在更新
【发布时间】:2020-02-08 14:46:49
【问题描述】:

我在 Google 表格中创建了以下脚本来制作时间戳,它可以很好地反映日期

function TIMESTAMP() {

var today = new Date();
var date = (today.getMonth()+1)+'-'+today.getDate()+'- 
'+today.getFullYear();
 var dateTime = date
return dateTime;

}

在我希望它反映的工作表中:

=if(K2="Done",TIMESTAMP())

然后主要问题是,当我今天打开工作表时,它在我使用它们的单元格中反映的是今天的日期而不是昨天。

尝试创建时间戳 尝试正常使用今天或现在的功能,但他们做了同样的事情 尝试使用快捷键 CTRL +;但这应该手动完成,我不想要这个 试图将源设为宏但不知道如何在此 IF 语句中应用它=if(K2="Done",TIMESTAMP())

我希望找到解决此问题的方法,因为这是针对任务的工作表,而我enter code here 正在创建它以让团队从列表中选择“完成”字以反映在旁边的单元格中完成的日期直接上

【问题讨论】:

  • 您好,您不能对公式执行此操作,因为它们会重新计算。您需要的是一个 onEdit 脚本,该脚本在选择值“完成”时触发,并在您想要的列中放置一个时间戳。如果您需要这方面的帮助,请分享您的电子表格副本。

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


【解决方案1】:

创建一个脚本,该脚本将在每次将单元格标记为完成时自动插入时间戳,而不是手动运行脚本。

你可以这样做:

function onEdit(e) {
var column=e.range.getColumn();
//check if a cell content in column K was set to "Done"
if(column==11&&e.value=="Done"){
  var today = new Date();
  var date = (today.getMonth()+1)+'-'+today.getDate()+'-'+today.getFullYear();
  var dateTime = date;
  var row=e.range.getRow();
  //specify the column of your choice
  var timeStampColumn=12;
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(row, timeStampColumn).setValue(dateTime);
 }
}

保存代码并尝试运行一次以启动身份验证流程。您将收到错误消息 TypeError: Cannot read property "range" from undefined 因为不能手动运行带有事件对象的 onEdit 函数,但您的代码将从那时起自动运行 - 每次都会对 K 列进行编辑。

参考资料:

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2018-01-09
    • 2022-01-08
    相关资源
    最近更新 更多