Problemi con getRange con campo orario (formato modulo ora)

di il
7 risposte

Problemi con getRange con campo orario (formato modulo ora)

Buongiorno, sto lavorando su un foglio google collegato ad un modulo google utilizzato per registrare le visite ad un santuario salesiano. Tra tutte le info richieste il modulo richiede anche data ed ora desiderato per l'accesso. Il modulo ed il filtro funzionano senza problemi ma ho trovato un problema nel campo orario con il comando getRange. In pratica quello che succede e' che l'orario non viene riconosciuto in modo corretto dal comando getRange.

L'orario (per esempio le 12:00) che viene inserito automaticamente dal modulo (formato ora) viene scritto sul foglio google come 12.00.00, ma il risultato del comando getRange su questo campo e' Sat Dec 30 1899 13:21:16 GMT+0100 (Central European Standard Time) che ovviamente non e' corretto.

Ho creato un piccolo modulo con relativo foglio google con data e ora per fare un semplice test. Poi due righe di codice per visualizzare i campi con il debug

https://drive.google.com/drive/folders/1W-iYNXVHU14yDme3q4-DPx8Ck2D6IBF6?usp=sharing

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var datifoglio = ss.getRange("A2:C" + ss.getLastRow()).getValues();
}

Utilizzando il debug si vede che il campo ora dell'array e'  formattato come  Sat Dec 30 1899 13:21:16 GMT+0100 (Central European Standard Time) . Non so se sia un errore mio (probabile) o un problema di formattazione del modulo.

Potete darmi un consiglio?

Grazie

Diego

7 Risposte

  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Buongiorno
    nessuno ha qualche idea/consiglio su cosa fare in questo caso ?
    Grazie ancora
    Diego
  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Non si capisce la richiesta…

    Se scrivi 0,5 come ora ti da 12:00:00?

  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Buongiorno

    l'inserimento dell'orario dal modulo viene fatto come 12:00 (ora : Minuti) e nel foglio google viene memorizzato come 12.00.00.

    Questo non e' un problema infatti il foglio google ha tutti i i dati corretti. Il problema arriva nel momento in cui faccio girare uno script in cui i dati vengono filtrati per mese e scritti in un altro foglio. Il foglio risultante filtrato ha i dati giusti, eccetto l'orario che viene formattato come Sat Dec 30 1899 13:21:16 GMT+0100 (Central European Standard Time). In pratica nel foglio filtrato tutti gli orari sono formattati in questo modo.

    Utilizzando il debug ho notato che campo orario con il comando getRange viene visto come Sat Dec 30 1899 13:21:16 GMT+0100 (Central European Standard Time), per cui tutta la colonna degli orari avra' un valore errato.

    Per semplificare l'indagine ho creato un modulo google con data ed ora (vedi il link) ed ho inserito alcuni dati. Poi utilizzando la semplice funzione getRange sono andato a vedere step by step i valori della variabile datifoglio che confermano il mio sospetto. Il valore del campo ora viene visto come Sat Dec 30 1899 13:21:16 GMT+0100 (Central European Standard Time).

    function myFunction() {
      var ss = SpreadsheetApp.getActive();
      var datifoglio = ss.getRange("A2:C" + ss.getLastRow()).getValues();
    }

    Questo implica che quando lo script che esegue il filtro viene eseguito il risultato della colonna ora ha i valori sbagliati.

    In sostanza sembra che il comando getRange non legga/formatti in modo corretto l'ora.

    Questo purtroppo non mi consente di usare il filtro ( il risultato filtrato ha i valori del campo ora sbagliati) il che e' un problema perche' il numero di righe sono parecchie.

    Qualsiasi suggerimento sarebbe utile

    Grazie

    Diego

  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Quello che hai estrapolato è il valore seriale di 0,5

    La parte intera sono i giorni dove zero è il 30/12/1899 e 5 decimi solo le 12 ossia ½ di 1 giorno fatto di 24 ore.

    Devi concatenare la data che ti interessa e sommare l'orario

    Es. Oggi: 08/11/24 + ore 12:00

    Prelevi la sola data e aggiungi l'orario.

    Devi solo estrapolare i decimali e convertirli in ore.

  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Ciao

    il concetto e' chiaro ma non riesco a capire come dovrei farlo.

    Ho un foglio google che non posso toccare,  “linkato” ad un modulo che riceve dati da un'utenza piuttosto vasta.

    La cosa che dovrei fare (se non ho capito male) dovrebbe essere fatta direttamente nello script di filtraggio che pero legge i dati (getRange) cosi come sono stati scritti dal modulo e li formatta nel modo che abbiamo visto.

    Grazie

  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Neanche io so cosa stai facendo… avrai una colonna data e una ora prendi l'intero della data e aggiungi il decimale delle ore.

  • Re: Problemi con getRange con campo orario (formato modulo ora)

    Ok ci provo.

    Grazie mille del suggerimento

Devi accedere o registrarti per scrivere nel forum
7 risposte