Ich möchte eine benutzerdefinierte Funktion in Google Sheet definieren. Diese Funktion sollte etwas sehr Einfaches tun, aber ich habe es nicht geschafft, herauszufinden, wie es geht. Ich bin sehr verwirrt mit all den Antworten, die ich lese, weil ich keine eindeutige Referenz zum Umgang mit Datumsangaben in Google-Skripten finden kann.

Soweit ich weiß, können grundlegende Datumsmanipulationen durchgeführt werden mit:

  • new Date(): Soweit ich weiß, definiert es ein Objekt mit einigen Eigenschaften. Ich weiß nicht, wie ich das Datum einer Zelle verwenden und konvertieren soll als solches Objekt.
  • Utilities.formatDate(): Hiermit wird das Format des Datums geändert, das als Zeichenfolge angezeigt wird.
  • die Bibliothek Moment ( http://momentjs.com/ )

Wie kann ich am Ende zwei Daten eingeben (z. B. 31/01/2016) und beispielsweise das Maximum zwischen den beiden finden und den Monat des ersten extrahieren one?

function myfun(date1,date2) { // month = month of date 1 // return maximum(date1,date2); } 

Ich bin auch daran interessiert, ob jemand die Umrisse des Umgangs mit Daten erklären oder eine gute Referenz angeben kann.

Kommentare

  • Siehe antworte mit Sergei insas auf Wie lese ich die richtigen Zeitwerte? aus der Google-Tabelle
  • Vielen Dank. Gibt es keinen anderen Weg? ' scheint unglaublich kompliziert zu sein, zum Beispiel den Monat eines Datums zu extrahieren! Außerdem muss die Zeitzone berücksichtigt werden … Das ' ist für einfache (feste) Datumsoperationen etwas verdreht.
  • Ich habe eine Antwort hinzugefügt, die sich auf konzentriert Der Code des Falles, der aufgedeckt wurde, aber die Frage ist zwei weit gefasst (Datumsmanipulation). Vielleicht sollten Sie zunächst nach JavaScript-Codefragmenten und Online-Kursen suchen.
  • @Rub é n Ich verstehe. Ich wollte keine " Schreibcode für mich " stellen und suchte nach allgemeinen Informationen, die ich nicht wirklich gefunden habe. Der von Ihnen angegebene Beitrag von Sergei insas ' ist hilfreich.
  • Allgemeine Informationen zu JavaScript finden Sie unter developer.mozilla. org / de-US / docs / Web / JavaScript und zu Google Apps Script siehe developer.google.com/apps-script .

Antwort

Abrufen und Festlegen von Datums- / Uhrzeitwerten

Immer wenn Ihr Skript In einer Zelle, die als Datum, Datum / Uhrzeit oder Dauer formatiert ist, wird ein JavaScript-Datumsobjekt angezeigt. Sie können dann verschiedene auf dieser MDN-Seite aufgelistete Methoden auf dieses Objekt anwenden, einschließlich getMonth() für den Monat. Beispiel:

 var sheet = SpreadsheetApp.getActiveSheet(); var value = sheet.getRange("A1").getValue(); // is a Date object Logger.log([value.getMonth(), value.getHours(), value.getUTCHours()]); // examples of available methods 

Umgekehrt können Sie einer Zelle mit setValue ein Datumsobjekt zuweisen automatisch als solche formatiert.

 sheet.getRange("B2").setValue(new Date()); // current timestamp 

Zeitzonen

Der Zeitstempel in Google Sheets befindet sich in der lokalen Zeitzone, die über die Einstellungen für Datei> Tabellenkalkulation festgelegt wird. Das Skript arbeitet auch innerhalb einer Zeitzone, die möglicherweise unterschiedlich ist und im Skripteditor unter Datei> Projekteigenschaften zu finden ist. Wenn diese Zeitzonen nicht übereinstimmen, haben Sie ein Problem mit Zeitstempeln.

Um zu überprüfen, ob die Zeitzonen übereinstimmen, können Sie entweder beide manuell vergleichen oder Folgendes tun:

var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1").setFormula("=date(2015,1,1)"); Logger.log(sheet.getRange("A1").getValue().getHours()); 

Hiermit wird die Formel eingegeben =date(2015,1,1) in der Zelle A1. Das Ergebnis ist 2015-01-01 00:00:00 in der Zeitzone der Tabelle. Das Skript erhält dann das Datum und extrahiert Stunden in der Ortszeit des Skripts. Wenn die Zeitzonen übereinstimmen, sollten Sie 0,0 in der sehen log.

Kommentare

  • Danke, arbeite für mich. Eine zusätzliche Frage: Ich möchte überprüfen. Eine Reihe von Zellen, wie Bereich (2, 1, 30, 20) .getValues; – wie erreicht man das?

Antwort

Kurze Antwort

Im Folgenden werden zwei benutzerdefinierte Funktionen als Beispiele für die Funktionsweise von Google Sheets und Google Apps Script mit Datumsangaben vorgestellt.

Beispiel 1: Abrufen des neuesten Datums

das neueste Datum abrufen

function myFunction(date1,date2) { return new Date(Math.max(date1,date2)) } 

Beispiel 2: Holen Sie sich den Monat des neuesten Datums

function myFunction2(date1,date2) { var date = new Date(Math.max(date1,date2)); return date.getMonth(); } 

Kurze Erklärung

Im ersten Beispiel die Math.max Die JavaScript-Methode erledigt den Job.

Wenn Sie ein Datum als Ergebnis erhalten möchten Ein Datumsobjekt wird mithilfe des neuen Date () erstellt.

Im zweiten Beispiel wird ein Datumsobjekt einer Variablen zugewiesen Anschließend wird die JavaScript-Methode getMonth () verwendet, um den Monatsindex abzurufen.Beachten Sie, dass JavaScript 0 als Startelement verwendet, sodass 0 für Januar 1 für Februar und so weiter.

Referenzen

Kommentare

  • i) Werden date1, date2 als Zahlen übergeben (normalerweise: 54243)? ii) Ich habe jetzt versucht, den Monat date2 mit date2.getMonth() zu extrahieren, aber wenn die Zelle 01/12/2015 gibt 10 und 11 für 02/12/2015 zurück. Ich denke, es ' liegt an der Zeitzone. Die Blattfunktion month() ist so viel einfacher.
  • Google Sheets behandelt Datumsangaben als Seriennummern wie JavaScript, aber jedes hat ein anderes Startdatum. Wenn Sie also JavaScript-Datumsfunktionen verwenden möchten, sollten Sie zuerst das Tabellenkalkulationsdatum in ein JavaScript-Datum konvertieren. Wie Sie bereits bemerkt haben, besteht der einfachere Weg darin, Tabellenkalkulationsfunktionen zum Behandeln von Tabellenkalkulationsdaten und JavaScript-Funktionen zum Behandeln von JavaScript-Daten zu verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.