web-dev-qa-db-fra.com

Comment formater la date dans ce script Google Documents

J'ai rencontré ce script de vérification de rang. Je ne sais pas exactement où je l'ai trouvé, mais il repose sur Google Docs et sur un script qui automatise le processus de vérification du classement. Je comprends un peu de codage mais pas assez pour comprendre cela. Je suis certain que quelqu'un ici peut le comprendre.

Le script s'exécute tous les soirs, interroge Google sur mes mots clés, puis remplit des cellules vides dans une feuille de calcul Google. Le format de date qui apparaît est 15.06.2014 06:08:21

J'aimerais que ce soit un format de date que je connais mieux, tel que mm/dd/yyyy ou quelque chose du genre.

Quoi qu'il en soit, j'ai manipulé le script (dans quelle langue est-il écrit? Python?) Et je vois qu'il définit une variable nommée curDat à new Date(). D'après ma compréhension, Date() est une fonction appelée et aucun paramètre n'y est passé - correct? Le problème concerne-t-il la fonction Date() ou s'agit-il simplement d'un cas où je dois formater la date dans Google Spreadsheets?

Voici un extrait du script entier - il est court:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.insertColumnBefore(5);
  var column = sheet.getRange('B13:B');
  var values = column.getValues();
  var rankingdrop = sheet.getRange("c8").getValue();
  var ct = 0;
  var colors = [];
  while ( values[ct][0] != "" ) {
  var formu = sheet.getRange("d" + (ct+13)).getFormula();
    sheet.getRange("d" + (ct+13)).setFormula(formu);
    Utilities.sleep(3000);
  var rank = sheet.getRange("d" + (ct+13)).getValue();
  sheet.getRange("e" + (ct+13)).setValue(rank);
  var oldrank = sheet.getRange("f" + (ct+13)).getValue();
  var colorcell = sheet.getRange("e" + (ct+13));
    if(rank > oldrank){
    colorcell.setFontColor("#ff0000");
  } else if (rank < oldrank){
    colorcell.setFontColor("#088A08");
  }
    if (rank - oldrank >= rankingdrop) {
      var mailalert = true;
    }
    ct++;
  }
  var sendmail = sheet.getRange("c7").getValue();
  if (mailalert == true && sendmail == "yes")  {
    var emailAddress = sheet.getRange("c9").getValue();
    var message = "Ranking alert. Please check your rankings";
    var url = sheet.getRange("c4").getValue();
    var subject = ("Ranking Alert for " + url);
    MailApp.sendEmail(emailAddress, subject, message);
  }
  var curDat = new Date();
  var startOTY = curDat.getFullYear();
  var curValue = Date.parse(curDat);
  var begDat = new Date(startOTY,0,1);
  var begValue = Date.parse(begDat);
  var weekNum = parseInt((curValue - begValue)/604800000)+1;
  sheet.getRange("e12").setValue(curDat);
}
8
user72299

Utilisez le code suivant pour modifier la notation de la date.

Code

var curDate = Utilities.formatDate(new Date(), "GMT+1", "MM/dd/yyyy")

Références

9
Jacob Jan Tuinstra

Utilisez setNumberFormat pour définir le format de date (ou de nombre) d'une cellule particulière. Cet exemple place la date d'aujourd'hui dans A1 de la feuille en cours, au format MM/jj/aaaa:

var cell = SpreadsheetApp.getActiveSheet().getRange(1, 1);
cell.setValue(new Date()).setNumberFormat("MM/dd/yyyy");

Raisons d'utiliser setNumberFormat (et non Utilities.formatDate, comme si souvent conseillé sur Internet):

  1. Utilities.formatDate ne modifie pas le format de cellule; il convertit son contenu en texte. Si vous allez utiliser la valeur de date dans les calculs, vous ne voulez pas qu'elle soit convertie en texte.
  2. Utilities.formatDate nécessite que l'on spécifie un fuseau horaire. Si vous mettez quelque chose comme "GMT + 1" et que votre pays respecte l'heure d'été, vous pouvez vous attendre à ce que des bugs difficiles à détecter se produisent quelques mois plus tard. Avec setNumberFormat, la valeur de date reste cohérente avec toutes les autres valeurs de date de la feuille de calcul, régie par son paramètre de fuseau horaire.
4
user135384

Avec le temps:

  var formatedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss")
0
Dawid Polakowski