So che sei felice con la soluzione così com'è, ma volevo solo aggiungere le mie osservazioni di come le offerte di Google Apps Script con "date", sia passato in una funzione personalizzata, o recuperate da una cella con getValue().
La mia regola è che se Sheets (il foglio di calcolo) sta fornendo un valore formattato come una data (o con la coercizione automatica, o l'impostazione del formato utente), allora Google Apps Script terrà automaticamente questo valore come un oggetto data.
Esempio:
function returnDate(value) {
return new Date(value);
}
Se si immette 1/1/13
in A1, e in un'altra cella si richiama =returnDate(A1)
, ritornerà la stessa data (come sarebbe se semplicemente avuto return value;
nel codice). Tuttavia, guarda cosa succede quando formatthi A1 come "Normale" (convertilo in un valore numerico). Qui, il "Numero di serie di fogli" (numero di giorni dal 30/12/1899) viene convertito in un oggetto data da Google Apps Script, ma in GAS viene "considerato" come il numero di millisecondi dalla mezzanotte 1/1/1970 . Quindi potresti ottenere risultati imprevisti se passi valori numerici che ritieni rappresentativi di una data.
confronta anche:
=returnDate(DATE(2013;1;1))
=returnDate(VALUE("1/1/13"))
=returnDate(DATEVALUE("1/1/13"))
=returnDate("1/1/13")
=returnDate("1/1/2013")
Gli ultimi due "funzionano", poiché new Date()
crea correttamente l'oggetto data da una stringa valida, ma nota che Fogli automaticamente costringe al secolo corrente, mentre GAS costringe un anno a due cifre al 1900.
Quindi IMO se si desidera che si comporti esattamente come in Excel (ovvero, "considera" un valore numerico come un numero seriale per una data), sarà necessario prima verificare se il parametro passato è una data oggetto (o stringa di testo "valida") e, in caso contrario, convertirlo matematicamente da "giorni dal 30/12/1899" a "millisecondi da 1/1/1970" e quindi new Date()
esso.
Ci scusiamo per il posto molto prolisso.
Dai un'occhiata alla formula in questo foglio di calcolo: https://docs.google.com/spreadsheet/ccc?key=0AqhqY231XZd3cFBiY2VqeWdmNWdaZ1BqVVZ2Q1pxWVE&hl=en#gid=0 – jfriend00
No go, ho paura - non puoi usare funzioni di fogli di calcolo in app-script, quindi devi scriverlo da zero. – EML
L'ultimo post in [questo thread] (http://productforums.google.com/forum/#!category-topic/apps-script/services/47tY3PTkExo) suggerisce che è possibile ottenere la data del foglio di calcolo, utilizzare alcune utilità javascript del foglio di calcolo per convertirlo in un formato di testo che può essere gestito dal costruttore di date javascript e quindi alimentare quella stringa con il costruttore di date javascript. Se si prende sul serio Googling questo problema, ho il sospetto che troverete una risposta. – jfriend00