我在Google电子表格中有一个字段,其中包含电影和电视的有效时间码。格式为01:00:02:12,即小时分秒和帧。
我希望能够根据需要键入几个数字,因此3秒将是3 0 0然后进行验证并输入/格式化为00:00:03:00
我的工作非常简单,从一列到另一列,例如
A1我输入300
A2设置为= TEXT(A1," 00:00:00:00")当然显示为00:00:03:00
但是我不想要额外的列,所以我怎么能这样做,当我在输入300后退出一个字段时,它会运行一个验证,然后根据需要用00:00:03:00替换我的300条目?
答案 0 :(得分:0)
这是script,它在A列(仅)中执行此类替换:
function onEdit(e) {
if (e.range.getColumn() == 1 && e.value.oldValue == null) {
var str = ('00000000' + e.value).slice(-8);
str = str.slice(0,2) + ':' + str.slice(2,4) + ':' + str.slice(4,6) + ':' + str.slice(6,8);
e.range.setValue(str);
}
}
说明:给定一个像54321的数字,它将形成字符串0000000054321,只保留最后8个字符00054321,然后将它们成对切片并在其间插入冒号。
该脚本不执行任何验证。这是一个更详细的版本,它检查时间戳是否有意义,如果不是,则拒绝更改任何内容。 (我不知道你想要的一秒钟中有多少帧,这个帧使用24帧。)
function onEdit(e) {
if (e.range.getColumn() == 1 && e.value.oldValue == null) {
if (!(e.value >= 0 && e.value < 1e8)) {
return;
}
var str = ('00000000' + e.value).slice(-8);
var hours = str.slice(0,2);
var minutes = str.slice(2,4);
var seconds = str.slice(4,6);
var frames = str.slice(6,8);
if (minutes > 59 || seconds > 59 || frames > 24) {
return;
}
str = hours + ':' + minutes + ':' + seconds + ':' + frames;
e.range.setValue(str);
}
}