2017-04-08 1 views
0

Googleで実行しているスプレッドシートのコピーを添付しました。概念は、誰かが注文を選ぶことを開始するとき、例えばI3に自分の名前を入力し、その時間が始まるというものです。一度完了すると、J3に名前を入力します。それぞれのタイムスタンプは、合計持続時間につながります。後でそれはパーセンテージを因数分解する。Googleシートスクリプトの作成、googelシートでタイムスタンプの自動更新や再取得を防止するにはどうすればよいですか?

問題は、タイムスタンプがプロンプトを表示せずにランダムに更新されているように見えることです。それが印刷されたり、再開されたときのようです。これは、時間とパーセンテージの不正確さを引き起こします。どのような援助が大幅に

をいただければ幸い私がこのようなニーズに対応するためにスクリプトを記述すべきであるように思われるが、私はこれを行う方法のわずかを持っていません。私は、Googleドキュメントヘルプフォーラム

enter link description here

+1

ようこそこのサイトの動作は他のサイトとは異なります。基本について知るには、[ツアー]とチェックアウト[質問]をしてください。次に、検索/調査の詳細を追加します。 –

答えて

0

で返信からこのフォーラムに向けた私は(私が間違っている場合を教えて)あなたが更新または再計算され、細胞に選択することができるとは思いません。

非最適化の回避策(たぶん一部の専門家は、より良い解決策を持っている):

function onEdit(e){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var i = 3; 

    while(i <= sheet.getLastRow()) 
    {  
    var data = sheet.getRange(i, 9, 3, 2).getValues(); 

    if(data[1][0].length == 0) 
    { 
     if(data[0][0] != "") 
     { 
     var d = new Date(); 
     sheet.getRange(i+1, 9).setValue(d); 
     } 
    } 
    if(data[1][1].length == 0) 
    { 
     if(data[0][1] != "") 
     { 
     var d = new Date() 
     sheet.getRange(i+1, 10).setValue(d); 
     } 
    } 
    i=i+3; 
    } 
} 

onEdit(e)機能は、単純なトリガがGoogleスプレッドシートで実装しています。セルが編集されるたびにトリガされます。

上記のコードでは、名前が追加されたかどうかを確認するために繰り返します。その場合、コードは追加されたばかりの名前の下に日付と時刻を設定します。値を1つの瞬間に設定するので、自動更新ではそれらの時刻が変更されることはありません。この問題を回避するための

、あなたはあなたがあなたのタイムスタンプ(すなわちI4とJ4を)したいセルに入れ式を削除する必要があります。あなたは時間の差を計算する細胞を保つことができます、彼らは問題なく動作するはずです。

0

以下のスクリプトをスクリプトエディタに貼り付けて保存します。

function onEdit(e) { 
if (e.range.rowStart % 3 != 0 || [9, 10].indexOf(e.range.columnStart) == -1) return; 
var o = e.range.offset(1, 0); 
if (!o.getValue()) o.setValue(new Date()) 
} 

スクリプトエディタの再生ボタンをクリックしてスクリプトを実行しないでください。いずれかのタブに戻るのではなく、今すぐ= now()式を持つすべてのセルをクリアし、名前を入力します。タイムスタンプが表示されるかどうかを確認します。

関連する問題