在电子表格中,需要一个按钮将表的时区当前时间和日期写入单元格中,因此每次按下该按钮时,该特定单元格中的时间戳都会更新。
在尝试了不同的脚本之后,拒绝了一些脚本,因为它们不使用dd/mm/yyyy :mm:ss或不允许更改格式,因此达到了以下目的:
function TIMESTAMP() {
SpreadsheetApp.getActiveRange().setValue(new Date());
var sheet = SpreadsheetApp.getActiveSheet();
var addedDate = sheet.getRange(1,1).getValue();
var addedTime = Utilities.formatDate(addedDate, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "hh:mm a");
}
当按下带有脚本的按钮时,带有正确时区的时间戳将显示在当前活动单元格中,但会显示一个错误:
异常:参数(字符串、字符串、字符串)与Utilities.formatDate的方法签名不匹配。
如何指定显示时间戳的单元格,使其值每次按下按钮时更新,并解决参数错误?
发布于 2020-05-22 13:53:11
这个怎么样:
function TIMESTAMP()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var addedDateAndTime = Utilities.formatDate(new Date, ss.getSpreadsheetTimeZone(), "dd/MM/yyyy HH:mm:ss");
//Optional if you only want the date: var addedDate = Utilities.formatDate(new Date, ss.getSpreadsheetTimeZone(), "dd/MM/yyyy");
//Optional if you only want the time: var addedTime = Utilities.formatDate(new Date, ss.getSpreadsheetTimeZone(), "hh:mm:ss");
sheet.getRange(1,1).setValue(addedDateAndTime)
}
发布于 2020-05-22 13:18:46
查看代码,错误消息的原因是活动单元格不是A1
,A1
为空(作为getValue
返回和空字符串)或具有文本值。
不改变代码的解决方案是,在运行函数之前,单击A1,然后运行该函数。
您的代码已经指定了显示时间戳的单元格。这条线上
SpreadsheetApp.getActiveRange().setValue(new Date());
它使用的是getActiveRange()
。要使用另一个单元格,我看到的大多数示例都使用类表的getRange
方法之一。
顺便说一句,这个网站上有几个关于在Google中添加时间戳的问题。一个例子是Automatic timestamp when a cell is filled out
参考文献
发布于 2020-05-22 14:57:56
尝试:
function TIMESTAMP() {
var ss=SpreadsheetApp.getActive();
var sheet=SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1).setValue(Utilities.formatDate(new Date(sheet.getRange(1,1).getValue()), ss.getSpreadsheetTimeZone(), "dd/MM/yyyy HH:mm:ss"));
}
https://stackoverflow.com/questions/61955353
复制相似问题