2016-06-16 6 views
0

フィルムとテレビ用の有効なタイムコードを含むGoogleスプレッドシートにフィールドがあります。これは01:00:02:12すなわち時間分の秒とフレームの形式です。Googleシート入力の検証と更新スクリプト

00としてフォーマット/ので、3秒が検証され、その後3 0 0となり必要に応じて入力されたとして、私は同じように、いくつかの数字を入力できるようにしたい

:00:03:00

私はそれが非常に働いてい単に一つの列から、私が入る

A1の横などにA2は= TEXT(A1、 "00 00:00:00")に設定されている300

:00:03:00もちろん00を表示

しかし、余分な列は必要ありません。どうすれば3と入力した後にフィールドを終了することができますか? 00それは必要に応じて私の300エントリを00:00:03:00に置き換える検証を実行しますか?ここ

答えて

0

カラムA(のみ)にそのような置換を行うscriptである:

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); 
    } 
}