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 Daten 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, das einige Eigenschaften hat. Ich weiß nicht, wie ich das Datum einer Zelle verwenden und als solches Objekt konvertieren soll.Utilities.formatDate()
: Hiermit ändern Sie das Format des Datums, 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?
function myfun(date1,date2) {
// month = month of date 1
// return maximum(date1,date2);
}
Ich bin auch interessiert, ob jemand die Umrisse des Umgangs mit Daten erklären oder eine gute Referenz angeben kann.
google-sheets
google-apps-script
verstanden
quelle
quelle
Antworten:
Abrufen und Festlegen von Datums- / Uhrzeitwerten
Immer wenn Ihr Skript
.getValue()
eine Zelle aufruft , die als Datum, Datum / Uhrzeit oder Dauer formatiert ist, erhält es ein JavaScript-Datumsobjekt . Sie können dann verschiedene auf dieser MDN-Seite aufgeführte Methoden auf dieses Objekt anwenden, auchgetMonth()
für den Monat. Beispiel:Umgekehrt können Sie einer Zelle mit ein Datumsobjekt zuweisen
setValue
, das automatisch als solches formatiert wird.Zeitzonen
Der Zeitstempel in Google Sheets befindet sich in der lokalen Zeitzone, die über Datei> Tabellenkalkulationseinstellungen festgelegt wird. Das Skript arbeitet auch in einer Zeitzone, die möglicherweise unterschiedlich ist und sich im Skripteditor unter Datei> Projekteigenschaften befindet. Wenn diese Zeitzonen nicht übereinstimmen, haben Sie ein Problem mit Zeitstempeln.
Um zu überprüfen, ob die Zeitzonen übereinstimmen, können Sie beide manuell vergleichen oder Folgendes tun:
Dies gibt die Formel
=date(2015,1,1)
in die Zelle A1 ein. 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, sollte im Protokoll 0.0 angezeigt werden.quelle
Kurze Antwort
Im Folgenden werden zwei benutzerdefinierte Funktionen als Beispiele dafür vorgestellt, wie Google Sheets und Google Apps Script mit Datumsangaben arbeiten können.
Beispiel 1: Holen Sie sich das neueste Datum
Beispiel 2: Ermitteln Sie den Monat des neuesten Datums
Kurze Erklärung
Im ersten Beispiel erledigt die Math.max- JavaScript-Methode den Job.
Wenn Sie ein Datum als Ergebnis erhalten möchten, wird ein Datumsobjekt mit new Date () erstellt .
Im zweiten Beispiel wird einer Variablen ein Datumsobjekt zugewiesen. Anschließend wird mit der JavaScript-Methode getMonth () der Monatsindex abgerufen . Beachten Sie, dass JavaScript als Startelement
0
für0
Januar,1
Februar usw. verwendet wird.Verweise
quelle
date1
,date2
bestanden als Zahlen ( in der Regel: 54243)? ii) Ich habe jetzt versucht, den Monat derdate2
Verwendung zu extrahieren ,date2.getMonth()
aber wenn die Zelle ist01/12/2015
, gibt sie 10 und 11 für zurück02/12/2015
. Ich denke, es liegt an der Zeitzone. Die Blattfunktionmonth()
ist so viel einfacher.myfunction2
10 zurück und wenn das Maximum 12.02.2015 ist, gibt es 11 zurück. Obwohl ich mit dem 11 in Ordnung bin, verstehe ich nicht Warum gibt 10 für den 01.12.2015 zurück. Wie gesagt, ich glaube, das liegt an GMT, bin mir aber nicht sicher. Vermisse ich etwas