为另一个与日期/时间相关的帖子道歉。我还没有弄清楚这个问题,所以欢迎任何评论。执行摘要:Excel 可用于处理较小的经过时间(体育赛事时间等),但表格不能,因为您需要编写一个脚本来显示较小的时间,而脚本会搞砸一些东西,以便表格不再将单元格视为稍后手动更改时间的时间。
我需要的时间通常很短,大约几分钟,秒到小数点后 2 位。我必须对这些时间进行算术运算(通常只与另一个时间进行比较)。
我们目前将所有内容都存储在 Excel 中,效果很好。如果您在某个范围内定义自定义显示格式,然后输入类似2:43.02
(2 分钟,43.02 秒)的时间,则单元格仍然包含时间,Excel 可以对这些时间进行算术运算。
然后我上传 Excel 电子表格,并在表格中打开它。没有内置的格式扩展,就像在 Excel 中一样,所以我必须使用扩展函数来显示时间2:43.02
,例如(见下文;函数调用setNumberFormat
)。在文档的新表格版本中,Excel 时间仍然是时间,并且比较有效,并且一切看起来都正确。
这就是问题所在。只有在您手动在表格单元格中输入新时间之前,一切都有效。例如,如果我输入2:41.05
,则单元格不再包含时间对象,并且所有算术都被破坏了。所以,我不能用表格来代替 Excel。我必须将所有内容保存在 Excel 中并偶尔上传,将表格版本保持为只读。
表格中有一些魔法可以确定单元格是否包含日期。如果我使用内置的时间格式,那么 Sheets 就会知道这是一个时间,并且如果手动更改时间,它就可以进行算术运算。如果我使用下面的函数(从这里)更改时间格式,那么魔法就会丢失,我无法手动更改时间。
function EditFormat() {
var oldname = SpreadsheetApp.getActiveRange().getNumberFormat();
var name = Browser.inputBox("Current format (blank = no change):\r\n"+ oldname);
SpreadsheetApp.getActiveRange().setNumberFormat((name=="")?oldname:name);
}
问:setNumberFormat
坏了?有没有更好的方法来完成这一切?我可以在脚本中做一些其他的事情来保持细胞的魔法状态吗?还是我必须回到 Excel?
谢谢。