Aș dori să definesc o funcție personalizată în Google Sheet. Această funcție ar trebui să facă ceva foarte simplu, dar nu am reușit să găsesc cum să o fac. Sunt foarte confuz cu toate răspunsurile pe care le-am citit, deoarece nu pot găsi o referință clară despre tratarea datelor în scripturile google.

Din câte am înțeles, se pot face manipulări de bază ale datei cu:

  • new Date(): din câte am înțeles, definește un obiect care are unele proprietăți. Nu știu cum să folosesc data unei celule și să o convertesc ca un astfel de obiect.
  • Utilities.formatDate(): aceasta este pentru a schimba formatul datei văzute ca șir .
  • biblioteca Moment ( http://momentjs.com/ )

La final, cum pot introduce două date (de ex. 31/01/2016) și, să zicem, să găsesc maximul dintre cele două și să extrag luna primei unul?

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

Sunt, de asemenea, interesat dacă cineva poate explica schițele legate de date sau poate indica o referință bună.

Comentarii

  • Consultați răspuns de Sergei insas la Cum să citiți valorile corecte ale timpului din foaia de calcul Google
  • Vă mulțumim. Nu există altă cale? ' s pare incredibil de complicat de extras, de exemplu, luna unei întâlniri! În plus, trebuie să țină cont de fusul orar … Acel ' este puțin răsucit pentru operații simple (fixe) de date.
  • Am adăugat un răspuns concentrat în codul cazului care a fost expus, dar întrebarea este de două mari (manipularea datei). Poate ar trebui să începeți prin a căuta fragmente de cod JavaScript și cursuri online.
  • @Rub é n Înțeleg. Nu am vrut să pun o " cod de scris pentru mine " întrebare, așa că am căutat informații generale pe care nu le-am găsit cu adevărat. Postarea pe care ați indicat-o pe Sergei insas ' este utilă.
  • În ceea ce privește informațiile generale despre JavaScript, consultați developer.mozilla. org / en-US / docs / Web / JavaScript și referitor la Google Apps Script, consultați developers.google.com/apps-script .

Răspuns

Obținerea și setarea valorilor datetime

Ori de câte ori scriptul dvs. apelează .getValue() pe o celulă formatată ca dată, dată-oră sau durată, primește un obiect JavaScript Date . Apoi, puteți aplica diverse metode listate pe acea pagină MDN acestui obiect, inclusiv getMonth() pentru luna respectivă. Exemplu:

 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 

În schimb, puteți atribui un obiect Date unei celule folosind setValue și va fi formatat automat ca atare.

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

Fusuri orare

Marcajul de timp din Foi de calcul Google se află în fusul orar local, care este setat prin fișier> Setări foaie de calcul. Scriptul funcționează și într-un fus orar, care poate fi diferit și se găsește în Fișier> Proprietăți proiect în editorul de script. Dacă aceste fusuri orare nu sunt de acord, veți avea o problemă cu marcajele de timp.

Pentru a verifica dacă fusurile orare sunt de acord, puteți fie să le comparați manual, fie să faceți așa ceva:

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

Aceasta introduce formula =date(2015,1,1) în celula A1. Rezultatul va fi 2015-01-01 00:00:00 în fusul orar al foii de calcul. Scriptul obține apoi data și extrage ore în ora locală a scriptului. Dacă fusurile orare sunt de acord, ar trebui să vedeți 0,0 în jurnal.

Comentarii

  • mulțumesc, lucrează pentru mine, O întrebare suplimentară: vreau să verific o grămadă de celule, cum ar fi intervalul (2, 1, 30, 20) .getValues; – cum se realizează acest lucru?

Răspuns

Răspuns scurt

Mai jos sunt prezentate două funcții personalizate ca exemple ale modului în care Foi de calcul Google și Scriptul Google Apps ar putea funcționa cu datele.

Exemplul 1: Obțineți cea mai nouă dată

obțineți cea mai nouă dată

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

Exemplul 2: Obțineți luna celei mai noi date

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

Scurtă explicație

În primul exemplu Math.max Metoda JavaScript face treaba.

Dacă doriți să obțineți o dată ca resu Lt, un obiect de dată este creat folosind Date () .

În al doilea exemplu, un obiect de dată este atribuit unei variabile , apoi se utilizează metoda getMonth () JavaScript pentru a obține indexul lunar.Rețineți că JavaScript utilizează 0 pentru elementul de pornire, astfel încât 0 este pentru ianuarie, 1 pentru februarie și așa mai departe.

Referințe

Comentarii

  • i) Sunt date1, date2 transmise ca numere (de obicei: 54243)? ii) Am încercat acum să extrag luna date2 folosind date2.getMonth(), dar când celula este 01/12/2015 returnează 10 și 11 pentru 02/12/2015. Cred că ' este din cauza fusului orar. Funcția de foaie month() este mult mai simplă.
  • Foi de calcul Google gestionează datele ca numere serializate la fel ca JavaScript, dar fiecare are o dată de începere diferită. Deci, dacă doriți să utilizați funcțiile de dată JavaScript, trebuie mai întâi să convertiți data foii de calcul într-o dată JavaScript. După cum ați observat deja, calea mai ușoară este utilizarea funcțiilor foii de calcul pentru a gestiona datele foilor de calcul și a funcțiilor JavaScript pentru a gestiona datele JavaScript.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *