Vorrei definire una funzione personalizzata in Fogli Google. Questa funzione dovrebbe fare qualcosa di molto semplice, ma non sono riuscito a trovare come farlo. Sono molto confuso con tutte le risposte che ho letto perché non riesco a trovare un riferimento chiaro su come gestire le date negli script di Google.

Da quello che ho capito, le manipolazioni di base della data possono essere fatte con:

  • new Date(): da quello che ho capito, definisce un oggetto che ha alcune proprietà. Non so come usare la data di una cella e convertirla come tale oggetto.
  • Utilities.formatDate(): questo serve per cambiare il formato della data vista come una stringa .
  • la libreria Moment ( http://momentjs.com/ )

Alla fine, come posso inserire due date (ad es. 31/01/2016) e, diciamo, trovare il massimo tra le due ed estrarre il mese della prima uno?

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

Sono anche interessato se qualcuno può spiegare gli schemi per trattare le date o indicare un buon riferimento.

Commenti

  • Visualizza il answer di Sergei insas a Come leggere i valori di ora corretti da foglio di lavoro Google
  • Grazie. Non cè altro modo? ' sembra incredibilmente complicato estrarre, ad esempio, il mese di una data! Inoltre deve tener conto del fuso orario … che ' è un po contorto per semplici operazioni di data (fissa).
  • Ho aggiunto una risposta incentrata su il codice del caso che è stato esposto, ma la questione è due ampi (manipolazione della data). Forse dovresti iniziare cercando snippet di codice JavaScript e corsi online.
  • @Rub é n Ho capito. Non volevo fare una " scrivere codice per me ", quindi stavo cercando informazioni generali che non ho trovato. Sergei insas ' Il post che hai indicato è utile.
  • Per informazioni generali su JavaScript vedi developer.mozilla. org / en-US / docs / Web / JavaScript e per quanto riguarda Google Apps Script, vedere developers.google.com/apps-script .

Risposta

Recupero e impostazione dei valori datetime

Ogni volta che lo script chiama .getValue() su una cella formattata come data, data-ora o durata, ottiene un oggetto JavaScript Date . È quindi possibile applicare a questo oggetto vari metodi elencati nella pagina MDN, incluso getMonth() per il mese. Esempio:

 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 

Al contrario, puoi assegnare un oggetto Date a una cella utilizzando setValue e sarà formattato automaticamente come tale.

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

Fusi orari

Il timestamp in Fogli Google è nel fuso orario locale, che viene impostato tramite File> Impostazioni foglio di lavoro. Lo script opera anche allinterno di un fuso orario, che potrebbe essere diverso e si trova in File> Proprietà del progetto nelleditor di script. Se questi fusi orari non sono daccordo, avrai un problema con i timestamp.

Per verificare se i fusi orari concordano, puoi confrontare entrambi manualmente o fare qualcosa di simile:

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

Questo inserisce la formula =date(2015,1,1) nella cella A1. Il risultato sarà 2015-01-01 00:00:00 nel fuso orario del foglio di lavoro. Lo script quindi ottiene la data ed estrae le ore nellora locale dello script. Se i fusi orari concordano, dovresti vedere 0.0 nel log.

Commenti

  • grazie, lavora per me, Una domanda aggiuntiva: voglio controllare un mucchio di celle, come intervallo (2, 1, 30, 20) .getValues; – come ottenerlo?

Risposta

Risposta breve

Di seguito vengono presentate due funzioni personalizzate come esempi del modo in cui Fogli Google e Google Apps Script potrebbero funzionare con le date.

Esempio 1: ottieni la data più recente

ottieni la data più recente

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

Esempio 2: Ottieni il mese della data più recente

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

Breve spiegazione

Nel primo esempio Math.max Il metodo JavaScript fa il lavoro.

Se lordine per ottenere una data come resu lt, un oggetto data viene creato utilizzando new Date () .

Nel secondo esempio, un oggetto data è assegnato a una variabile , quindi il metodo JavaScript getMonth () viene utilizzato per ottenere lindice del mese.Tieni presente che JavaScript utilizza 0 per lelemento iniziale, quindi 0 è per gennaio, 1 per febbraio e così via.

Riferimenti

Commenti

  • i) date1, date2 vengono passati come numeri (in genere: 54243)? ii) Ora ho provato a estrarre il mese di date2 utilizzando date2.getMonth() ma quando la cella è 01/12/2015 restituisce 10 e 11 per 02/12/2015. Immagino sia ' a causa del fuso orario. La funzione foglio month() è molto più semplice.
  • Fogli Google gestiscono le date come numeri serializzati come JavaScript, ma ognuno ha una data di inizio diversa. Quindi, se desideri utilizzare le funzioni di data JavaScript, devi prima convertire la data del foglio di calcolo in una data JavaScript. Come hai già notato, il percorso più semplice è utilizzare le funzioni del foglio di lavoro per gestire le date del foglio di lavoro e le funzioni JavaScript per gestire le date JavaScript.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *