私は、セルが特定の値を持つ時間を記録するために離れています。 例:H4 = ABCの場合、XYZに変更します。 H4がABCだった時間をXYZに変更する前に記録する必要があります。 Googleスクリプトライブラリでタイマー機能を見つけることができませんでした。 ご協力いただければ幸いです。 シートと現在実行中のすべてのスクリプトへのリンクです。 https://docs.google.com/spreadsheets/d/1eqOXVR9_2fe246PejvwUZd-Z1RoDN8OyS9B7Hk8FZRI/edit?usp=sharingレコードセルの値時間
1
A
答えて
0
GASのタイマー機能についてはわかりませんが、常に実行するのは最適ではありません。よりよい方法は、あなたが持っているタイムスタンプと現在の日付との間のセルの変化の時間差を計算することです。
それも時間の違いが含まれるように、私はthis functionを少し微調整しました:
function dateDiff(start, end) {
var diff = { years: 0, months: 0, days: 0 };
var timeDiff = end - start;
if (timeDiff > 0) {
diff.years = end.getFullYear() - start.getFullYear();
diff.months = end.getMonth() - start.getMonth();
diff.days = end.getDate() - start.getDate();
diff.hours = end.getHours() - start.getHours();
if (diff.months < 0) {
diff.years--;
diff.months += 12;
}
if (diff.days < 0) {
diff.months = Math.max(0, diff.months - 1);
diff.days += 30;
}
if (diff.hours < 0) {
diff.days = Math.max(0, diff.days - 1);
diff.hours += 24;
}
}
return diff;
};
そして今、このDateDiff関数を使用して、あなたのonEdit
機能を:
function onEdit() {
// This section returns if you're not on the SBC/HP spreadsheet.
var sheet = "SBC/HP";
var s = SpreadsheetApp.getActiveSheet();
var r = s.getActiveCell();
// if r is in column h { do the rest }
if(r.getColumn() != 11){
var row = r.getRow();
var previousDate = new Date(s.getRange(row, 11).getValue()); //getting the timestamp of the previous change. Looks like the year should be YYYY, not YY as it is now
var time = new Date();
var timeDiff = dateDiff(previousDate, time); //calculating time difference in a separate function
time = Utilities.formatDate(time, "GMT-05:00", "MM/dd/yy, hh:mm:ss");
s.getRange(row, 12).setValue(timeDiff.years + ' years ' + timeDiff.months + ' months ' + timeDiff.days + ' days ' + timeDiff.hours + ' hours'); //pasting time difference in some format in a separate cell
s.getRange('K' + row.toString()).setValue(time);
}
}
あなたはどのようにそれを確認することができます作品here
0
Stackdriver LoggingとonEdit()を組み合わせてください。次に、Log Filtersおよび/またはLog Exportingを使用して、INFOログのタイムスタンプを抽出します。
function onEdit (e) {
var message = e.range.getA1Notation() + " changed to " + e.value;
console.info({message:message});
}
それはスクリプトエディタでLog ViewerView > Stackdriver Logging
をプロジェクトに取得します。ここからconsole.info()メッセージを除外し、Stackdriver Loggingメッセージに同じe.range.getA1Notation()
を含むタイムスタンプとの時差を取得することができます。
関連する問題
- 1. Geom_vline時間の値
- 2. SQL 2つの時間列の間の2つの時間値
- 3. フォーマット時間(時と分)のループ値
- 4. 時間間隔でのカウント値
- 5. OBJCの数値を時間の値に変換しますか? (時間のパーセントの代わりに時間)
- 6. 変換時間(ミリ秒)の持続時間(BigDecimal値+時間単位)長い
- 7. MS-EXCEL:時間平均+時間の数値
- 8. シグナル:時間間隔で値を収集
- 9. カサンドラタイムスタンプ:間違った時間値
- 10. 加算値 - 実行時間
- 11. キャスティングとサミングの継続時間の値
- 12. 値の一定時間のビニング
- 13. 時間の変換の整数値に
- 14. データフレームの時間と値の合計
- 15. JPAの合計時間フィールド値
- 16. 自動時間帯の数値計算
- 17. 範囲内のSQLチェック時間値
- 18. 最小セッション時間のデフォルト値
- 19. 数値形式への時間変換
- 20. Javascriptで時間の値を合計
- 21. 同じフィールドの異なる時間値
- 22. Pythonの時間値を印刷
- 23. 24時間形式のUIDatePicker戻り値
- 24. 時間の値に6時間の差があるのはなぜですか?
- 25. 各時間の最後の12時間のデータベース値を集計します。
- 26. 開始時間と終了時間の間の計算時間
- 27. DateTime.ParseExact()は24時間の時間値を取得しません。コードの
- 28. 2つの日付時刻値間の時間差を計算する
- 29. vbscriptでの時間間隔の時間
- 30. 時間と時間のマージ
変更、バックこんなに遅くなって申し訳ありませんが、これは非常にうまくいきました。日、時間、分のみを含むように、時間形式を少し変更しました。 –