Google Sheets Apps Script Uhrzeit aus Zelle zum Rechnen nehmen?

Hallo zusammen,

ich versuche mich aktuell an Apps Script für Google Sheets. Hier komme ich an einem Punkt jetzt aber nicht weiter.

Ich habe in einer Zelle eine Dauer (00:30:00; auch als Zeit formatiert). Zusätzlich habe ich eine Variable (pause), die auch eine Dauer enthält. Mein Wunsch ist, dass er den Wert aus der besagten Zelle nimmt, den Wert von Pause dazu addiert und das Ergebnis wieder in die Zelle schreibt und dadurch den alten Wert ersetzt. Ist ja an sich einfach aber irgendwie ermittelt das System beim Auslesen der Dauer aus der Zelle einen komplett falschen Wert:

Ausgeslesen werden soll der Wert aus der Zelle 1765,6 Hier das COding dazu, wo er das Feld ausliest:

function PauseEintragen(pause){
  var app = SpreadsheetApp;
  var ss_arbeitszeit =app.getActiveSpreadsheet();
  var sheet_arbeitszeit=ss_arbeitszeit.getSheetByName('Arbeitszeit');

  //var row=sheet_arbeitszeit.getLastRow();
    //sheet_arbeitszeit.getRange(row,6).setValue(sheet_arbeitszeit.getRange(row,6).getValue()+pause);
  
  sheet_arbeitszeit.getRange(2,1).setValue(pause);
  var test = new Date(sheet_arbeitszeit.getRange(1765,6).getValue());
  var h = test.getHours();
  var m = test.getMinutes();
  var s = test.getSeconds();

  Logger.log(test);
  
  var testtime = h + ":" + m + ":" + s;
} 

Und das ist die Zelle dazu:

Wenn ich das Coding laufen lasse, liest er im Logger das aus:

Warum auch immer liest er 01:20:39 aus statt 00:30:00.

Hat einer eine Idee, warum er das macht?

Vielen Dank.

Gruß Dominik

...zum Beitrag

Ich habe es nun doch hinbekommen. Allerdings ist es sehr umständlich. Ich rechne die Zeiten in Sekunden um, dann bilde ich die Summe, dann wird es wieder zurückgerechnet. Außerdem muss das Feld zuerst zu einem Textfeld formatiert werden und danach zu einem Format "Zeit". Falls jemand mal ein ähnliches Problem hat:

function calculateTimeFromSeconds(seconds, format = 'HH:mm:ss') {
  if (typeof seconds !== 'number') {
    throw new Error('Invalid input: seconds must be a number.');
  }


  // Ensure seconds is non-negative
  seconds = Math.max(0, seconds);


  // Extract hours, minutes, and seconds using integer division and modulo
  const hours = Math.floor(seconds / 3600);
  const minutes = Math.floor((seconds % 3600) / 60);
  const secs = seconds % 60;


  // Format the time string using the specified format
  return format.replace('HH', hours.toString().padStart(2, '0'))
              .replace('mm', minutes.toString().padStart(2, '0'))
              .replace('ss', secs.toString().padStart(2, '0'));
}


function parseDurationString(durationString) {
  if (typeof durationString !== 'string') {
    return null; // Handle non-string inputs
  }

  const parts = durationString.split(':');
  if (parts.length !== 3) {
    return null; // Handle invalid formats
  }

  const hours = parseInt(parts[0], 10);
  const minutes = parseInt(parts[1], 10);
  const seconds = parseInt(parts[2], 10);

  if (isNaN(hours) || isNaN(minutes) || isNaN(seconds) ||
      hours < 0 || minutes < 0 || minutes >= 60 ||
      seconds < 0 || seconds >= 60) {
    return null; // Handle invalid values
  }

  return hours * 3600 + minutes * 60 + seconds;
}

function PauseEintragen(pause){
  var app = SpreadsheetApp;
  var ss_arbeitszeit =app.getActiveSpreadsheet();
  var sheet_arbeitszeit=ss_arbeitszeit.getSheetByName('Arbeitszeit');
  
  var row=sheet_arbeitszeit.getLastRow();    
  sheet_arbeitszeit.getRange(row,6).setNumberFormat("@");


  let zeitAlt = parseDurationString(sheet_arbeitszeit.getRange(row,6).getValue());
  let pauseZeit = parseDurationString(pause);


  var zeitNeu =zeitAlt+pauseZeit;
  
  // Set the cell value to the calculated time
  sheet_arbeitszeit.getRange(row,6).setValue(calculateTimeFromSeconds(zeitNeu)); 

  // Format the cell as time (adjust format as needed)
  sheet_arbeitszeit.getRange(row,6).setNumberFormat("HH:mm:ss"); 
}

PS: Die Variable pause übernehme ich aus einem HTML Fenster und ich habe es so umgebaut, dass die Zeile, in der der Wert eingetragen bzw. ausgelesen wird immer die letzte Zeile ist.
...zur Antwort

Danke für eure schnellen Antworten.
Ja ab der Erziehung arbeiten wir. Nur glaube ich nicht, dass es bei einem einjährigen reichen wird das einmal zu sagen. Das wird vermutlich seine Zeit brauchen, bis er es final kapiert. Und die Dose ist erst seit heute frei, da davor ein Schränkchen davor stand, was jetzt aber weg ist. Daher bräuchten wir eben eine Sicherung weil ich keine Lust habe, dass das Kabel dann doch mal weg ist, weil wir dann eben nicht aufgepasst haben.

...zur Antwort