Come formattare la data in questo script di Google Apps


10

Mi sono imbattuto in questo script di verifica dei ranghi. Non sono sicuro di dove l'ho trovato, ma è basato su Google Documenti e su uno script che automatizza il processo di verifica del grado. Capisco un po 'di codice ma non abbastanza per capirlo davvero. Sono certo che qualcuno qui può capirlo.

Lo script viene eseguito di notte, richiede a Google le mie parole chiave e quindi popola celle vuote in un foglio di calcolo di Google. Il formato della data che appare è15.06.2014 06:08:21

Vorrei che fosse un formato di data con cui ho più familiarità, come mm/dd/yyyyo qualcosa del genere.

In ogni caso, ho dilettato con lo script (che lingua è scritto in questo? Python?) E vedo che imposta una variabile denominata curData new Date(). Da quanto ho capito, Date()è una funzione che viene chiamata e nessun parametro le viene passato: è corretta? Il problema è nella Date()funzione o è solo un semplice caso in cui devo formattare la data in Google Spreadsheets?

Ecco una copia dell'intero script - è breve:

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);
}

"(in che lingua è scritto? python?)" È JavaScript, vedi developers.google.com/apps-script
Vidar S. Ramdal

Risposte:



9

Utilizzare setNumberFormatper impostare il formato data (o numero) per una cella particolare. Questo esempio inserisce la data odierna in A1 del foglio corrente, formattata come MM / gg / aaaa:

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

Motivi per l'uso setNumberFormat(e non Utilities.formatDate, come se spesso consigliato su Internet):

  1. Utilities.formatDatenon cambia il formato della cella; converte il suo contenuto in testo. Se si intende utilizzare il valore della data nei calcoli, non si desidera che venga convertito in testo.
  2. Utilities.formatDaterichiede uno per specificare un fuso orario. Se inserisci qualcosa come "GMT + 1" e il tuo Paese osserva l'ora legale, puoi aspettarti che alcuni mesi dopo vengano rilevati bug difficili da rintracciare. Con setNumberFormat, il valore della data rimane coerente con tutti gli altri valori della data nel foglio di calcolo, regolato dall'impostazione del fuso orario.

Nota per 2 .: è possibile utilizzare Session.getScriptTimeZone()come parametro fuso orario.
Kos,

Il problema è che Session.getScriptTimeZone()genera il formato lungo (es. America / Denver) anziché "GMT-7", quindi devi convertirlo in qualche modo.
Craig.Pearce,

@ Craig.Pearce Right, e se "America / Denver" si converte in GMT-7 o GMT-6 dipende dal fatto che l'ora legale sia in vigore, che dipende dallo stato in cui ci si trova e da quali leggi sono state approvate in quello stato recentemente.

0

Col tempo:

  var formatedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.