Je souhaite définir une fonction personnalisée dans Google Sheet. Cette fonction devrait faire quelque chose de très simple, mais je n'ai pas réussi à trouver comment le faire. Je suis très confus avec toutes les réponses que j'ai lues parce que je ne trouve pas de référence claire sur le traitement des dates dans les scripts Google.
D'après ce que je comprends, les manipulations de base des dates peuvent être effectuées avec:
new Date()
: d'après ce que je comprends, il définit un objet qui a des propriétés. Je ne sais pas comment utiliser la date d'une cellule et la convertir en un tel objet.Utilities.formatDate()
: il s'agit de changer le format de la date vue sous forme de chaîne .- la bibliothèque
Moment
( http://momentjs.com/ )
En fin de compte, comment puis-je entrer deux dates (par exemple 31/01/2016
) et, par exemple, trouver le maximum entre les deux et extraire le mois du premier?
function myfun(date1,date2) {
// month = month of date 1
// return maximum(date1,date2);
}
Je suis également intéressé si quelqu'un peut expliquer les grandes lignes du traitement des dates ou indiquer une bonne référence.
google-sheets
google-apps-script
anderstood
la source
la source
Réponses:
Obtention et définition de valeurs datetime
Chaque fois que votre script appelle
.getValue()
une cellule formatée en date, date-heure ou durée, il obtient un objet Date JavaScript . Vous pouvez ensuite appliquer diverses méthodes répertoriées sur cette page MDN à cet objet, y comprisgetMonth()
pour le mois. Exemple:Inversement, vous pouvez affecter un objet Date à une cellule à l'aide de
setValue
, et il sera automatiquement formaté comme tel.Fuseaux horaires
L'horodatage dans Google Sheets se trouve dans le fuseau horaire local, qui est défini via Fichier> Paramètres de la feuille de calcul. Le script fonctionne également dans un fuseau horaire, qui peut être différent et se trouve sous Fichier> Propriétés du projet dans l'éditeur de script. Si ces fuseaux horaires ne correspondent pas, vous aurez un problème avec les horodatages.
Pour vérifier si les fuseaux horaires correspondent, vous pouvez soit comparer les deux manuellement, soit faire quelque chose comme ceci:
Cela entre la formule
=date(2015,1,1)
dans la cellule A1. Le résultat sera le 2015-01-01 00:00:00 dans le fuseau horaire de la feuille de calcul. Le script obtient ensuite la date et extrait les heures dans l'heure locale du script. Si les fuseaux horaires sont d'accord, vous devriez voir 0.0 dans le journal.la source
Réponse courte
Ci-dessous, deux fonctions personnalisées sont présentées comme des exemples de la façon dont Google Sheets et Google Apps Script peuvent fonctionner avec les dates.
Exemple 1: obtenir la date la plus récente
Exemple 2: obtenir le mois de la date la plus récente
Brève explication
Dans le premier exemple, la méthode JavaScript Math.max fait le travail.
Si vous souhaitez obtenir une date comme résultat, un objet date est créé en utilisant new Date () .
Dans le deuxième exemple, un objet date est affecté à une variable, puis la méthode JavaScript getMonth () est utilisée pour obtenir l'index du mois. Gardez à l'esprit que JavaScript est utilisé
0
comme élément de départ0
pour janvier,1
février et ainsi de suite.Références
la source
date1
- ilsdate2
passés sous forme de nombres (généralement: 54243)? ii) J'ai maintenant essayé d'extraire le mois d'date2
utilisation,date2.getMonth()
mais lorsque la cellule est,01/12/2015
elle renvoie 10 et 11 pour02/12/2015
. Je suppose que c'est à cause du fuseau horaire. La fonction de feuillemonth()
est tellement plus simple.myfunction2
retourne 10 et quand le max est 02/12/2015, il retourne 11. Alors que je suis OK avec le 11, je ne comprends pas pourquoi renvoie 10 pour le 01/12/2015. Comme je l'ai dit, je crois que cela est dû à GMT mais je ne suis pas sûr. Suis-je en train de manquer quelque chose?