Je voudrais définir une fonction personnalisée dans Google Sheet. Cette fonction devrait faire quelque chose de très simple, mais je nai pas réussi à trouver comment le faire. Je suis très confus avec toutes les réponses que jai lues car je ne trouve pas de référence claire sur le traitement des dates dans les scripts Google.

Daprès ce que je comprends, les manipulations de date de base peuvent être effectuées avec:

  • new Date(): daprès ce que jai compris, il définit un objet qui a des propriétés. Je ne sais pas comment utiliser la date dune cellule et la convertir comme tel objet.
  • Utilities.formatDate(): il sagit 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 saisir deux dates (par exemple 31/01/2016) et, par exemple, trouver le maximum entre les deux et extraire le mois du premier un?

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

Je suis également intéressé si quelquun peut expliquer les grandes lignes du traitement des dates, ou indiquer une bonne référence.

Commentaires

  • Voir le answer par Sergei insas à Comment lire les valeurs dheure correctes de Google Spreadsheet
  • Merci. Ny a-t-il pas dautre moyen? Cela ' semble incroyablement compliqué à extraire, par exemple, le mois dune date! De plus, il doit prendre en compte le fuseau horaire … Cela ' est un peu tordu pour des opérations de date simple (fixe).
  • Jai ajouté une réponse centrée sur le code du cas qui a été exposé, mais la question est à deux larges (manipulation de date). Peut-être devriez-vous commencer par chercher des extraits de code JavaScript et des cours en ligne.
  • @Rub é n Je comprends. Je ne voulais pas poser de question " écrire du code pour moi " donc je cherchais des informations générales que je nai pas vraiment trouvées. Le message de Sergei insas ' que vous avez indiqué est utile.
  • Pour des informations générales sur JavaScript, consultez developer.mozilla. org / en-US / docs / Web / JavaScript et concernant Google Apps Script, voir développeurs.google.com/apps-script .

Réponse

Obtention et définition des valeurs datetime

Chaque fois que votre script appelle .getValue() sur une cellule au format date, date-heure ou durée, il obtient un objet JavaScript Date . Vous pouvez ensuite appliquer diverses méthodes répertoriées sur cette page MDN à cet objet, y compris getMonth() pour le mois. Exemple:

 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 

Inversement, vous pouvez attribuer un objet Date à une cellule en utilisant setValue, et ce sera automatiquement formaté comme tel.

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

Fuseaux horaires

Lhorodatage dans Google Sheets est 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 concordent, vous pouvez soit comparer les deux manuellement, soit faire quelque chose comme ceci:

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

Ceci entre la formule =date(2015,1,1) dans la cellule A1. Le résultat sera le 01/01/2015 00:00:00 dans le fuseau horaire de la feuille de calcul. Le script obtient alors la date et extrait les heures dans lheure locale du script. Si les fuseaux horaires correspondent, vous devriez voir 0.0 dans le champ log.

Commentaires

  • merci, travaillez pour moi, Une question supplémentaire: je veux vérifier Un tas de cellules, comme range (2, 1, 30, 20) .getValues; – comment y parvenir?

Réponse

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

obtenir la date la plus récente

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

Exemple 2: Obtenir le mois de la date la plus récente

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

Brève explication

Dans le premier exemple, Math.max La méthode JavaScript fait le travail.

Si vous voulez obtenir une date comme resu lt, un objet date est créé en utilisant la nouvelle Date () .

Dans le deuxième exemple, un objet date est affecté à une variable , alors la méthode JavaScript getMonth () est utilisée pour obtenir lindex du mois.Gardez à lesprit que JavaScript utilise 0 pour lélément de départ donc 0 correspond à janvier, 1 pour février et ainsi de suite.

Références

Commentaires

  • i) Est-ce que date1, date2 est passé sous forme de nombres (généralement: 54243)? ii) Jai maintenant essayé dextraire le mois de date2 en utilisant date2.getMonth() mais lorsque la cellule est 01/12/2015 il renvoie 10 et 11 pour 02/12/2015. Je suppose que cest ' à cause du fuseau horaire. La fonction de feuille month() est tellement plus simple.
  • Google Sheets traite les dates comme des numéros de série de la même manière que JavaScript, mais chacun a une date de début différente. Donc, si vous souhaitez utiliser les fonctions de date JavaScript, vous devez dabord convertir la date de la feuille de calcul en date JavaScript. Comme vous lavez déjà remarqué, le chemin le plus simple consiste à utiliser les fonctions de feuille de calcul pour gérer les dates des feuilles de calcul et les fonctions JavaScript pour gérer les dates JavaScript.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *