Ich habe den folgenden Code auf einem gsheet -Zeit Arithmetic Berechnungsfehler
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var task = ss.getRange(1,2).getValue(); //ss.getRange("A2").getValue();
var date = new Date();
function onEdit(e) {
if (e.range.getA1Notation() == 'B2') {
if (/^\w+$/.test(e.value)) {
// console.log(e.value);
eval(e.value)();
e.range.clear();
}
}
}
function Start() {
var last = ss.getLastRow();
ss.getRange(last+1, 1).setValue(task);
ss.getRange(last+1, 2).setValue(date);
}
function End() {
var last = ss.getLastRow();
ss.getRange(last, 3).setValue(date);
var endTime = ss.getRange(last, 3).getValue();
var startTime = ss.getRange(last, 2).getValue();
ss.getRange(last, 4).setValue(endTime-startTime);
}
Jedes Mal, wenn sich die Zelle in B2 bearbeitet wird, es läuft eine der validierten Namen der Funktionen - entweder Start oder Ende.
Wenn 'start', wird der Wert der Zelle b1 (validierte Liste der Aufgabennamen) in die erste Spalte und die aktuelle Uhrzeit im Format MM/TT/JJJJ HH: MM: SS geschrieben.
Wenn 'Ende', ist es die aktuelle Zeit in MM/TT/JJJJ HH: MM: SS Format in der dritten Spalte und versucht, die Differenz zwischen der "Start" -Zeit und "Ende" -Zeit in der vierten Spalte Spalte oder eine Berechnung.
Hier ist der Fehler (oder mein Mangel an Verständnis, wie gsheets works)
Der Code erzeugt die folgende:
Task| Start | End | Duration
DOS | 8/2/2017 16:44:28 | 8/2/2017 16:44:31 | 2,418.00
Frage - was die 2418 ist? Die Gesamtdauer sollte 2 Sekunden oder 00:00:02 betragen. Ist es angesichts des obigen Codes ein Code-Problem oder ein Format des Zellenproblems?
Wenn ich in die Zelle d2 = c2-b2 lege, funktioniert es gut, solange die Spalte als Dauer formatiert ist. Aber ich würde es lieber nicht tun, da die Einfüge- oder Anfangs-/Endzeiten von der letzten Zeile abhängen - wenn ich also die Formel unten auf dem Gsheet kopiere/einfügen würde, wären die Daten nicht kontinuierlich.