Haluan määritellä mukautetun toiminnon Google Sheetissä. Tämän toiminnon pitäisi tehdä jotain hyvin yksinkertaista, mutta en ole onnistunut löytämään miten se tehdään. Olen hyvin hämmentynyt kaikkien lukemieni vastausten kanssa, koska en löydä selkeää viittausta päivämäärien käsittelemiseen google-skripteistä.

Ymmärtääkseni peruskäyttäytymiset voidaan tehdä seuraavasti:

  • new Date(): ymmärtääkseni se määrittelee objektin, jolla on joitain ominaisuuksia. En tiedä miten käyttää solun päivämäärää ja muuntaa se sellaisenaan.
  • Utilities.formatDate(): tämä muuttaa merkkijonona pidetyn päivämäärän muotoa.
  • kirjasto Moment ( http://momentjs.com/ )

Kuinka lopulta voin syöttää kaksi päivämäärää (esim. 31/01/2016) ja sanoa, löytää maksimiarvo näiden kahden välillä ja purkaa ensimmäisen kuukauden yksi?

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

Olen myös kiinnostunut, jos joku osaa selittää päivämäärien käsittelyn pääpiirteet tai antaa hyvän viitteen.

Kommentit

  • Katso vastaus kirjoittanut Sergei insas kohtaan Kuinka lukea oikeat aika-arvot Google-laskentataulukosta
  • Kiitos. Eikö ole muuta tapaa? ' s näyttää uskomattoman monimutkaiselta poimia esimerkiksi päivämäärän kuukauden! Lisäksi sen on otettava huomioon aikavyöhyke … Tämä ' bitti kierretty yksinkertaisia (kiinteitä) päivämääräoperaatioita varten.
  • Lisäsin vastauksen, joka keskittyi paljastetun tapauksen koodi, mutta kysymys on kaksi laajaa (päivämäärän manipulointi). Ehkä sinun pitäisi aloittaa etsimällä JavaScript-koodinpätkiä ja verkkokursseja.
  • @Rub é n Ymmärrän. En halunnut kysyä " kirjoituskoodia minulle ", joten etsin yleistä tietoa, jota en oikeastaan löytänyt. Ilmoittamasi Sergei insas ' -viesti on hyödyllinen.
  • JavaScript-yleistietojen osalta katso developer.mozilla. org / fi-US / docs / Web / JavaScript ja Google Apps Script -sovelluksesta, katso developers.google.com/apps-script .

Vastaa

Päivämääräarvojen saaminen ja asettaminen

Aina kun komentosarjasi soittaa .getValue() soluksi, joka on muotoiltu päivämäärä, päivämäärä-aika tai kesto, se saa JavaScript Date -objektin . Voit sitten käyttää useita MDN-sivulla lueteltuja menetelmiä tälle objektille, mukaan lukien getMonth() kuukaudelle. Esimerkki:

 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 

Päinvastoin, voit määrittää Date-objektin solulle käyttämällä setValue, ja se automaattisesti alustettu sellaisenaan.

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

Aikavyöhykkeet

Google Sheetsin aikaleima on paikallisella aikavyöhykkeellä, joka asetetaan kohdassa Tiedosto> Laskentataulukon asetukset. Komentosarja toimii myös aikavyöhykkeellä, joka voi olla erilainen ja löytyy komentosarjaeditorin Tiedosto> Projektin ominaisuudet -kohdasta. Jos nämä aikavyöhykkeet eivät ole samaa mieltä, sinulla on ongelmia aikaleimojen kanssa.

Voit tarkistaa aikavyöhykkeiden yhteensopivuuden joko vertaamalla molempia manuaalisesti tai tekemällä jotain tällaista:

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

Tämä syöttää kaavan =date(2015,1,1) solussa A1. Tulos on 2015-01-01 00:00:00 laskentataulukon aikavyöhykkeellä. Skripti saa sitten päivämäärän ja otteet tunnit komentosarjan paikallista aikaa. Jos aikavyöhykkeet sopivat, sinun pitäisi nähdä 0.0 loki.

Kommentit

  • kiitos, toimi minulle, Lisäkysymys: Haluan tarkistaa Joukko soluja, kuten alue (2, 1, 30, 20) .getValues; – miten se saavutetaan?

Vastaa

Lyhyt vastaus

Alla on kaksi mukautettua toimintoa esimerkkinä siitä, kuinka Google Sheets ja Google Apps Script voivat toimia päivämäärien kanssa.

Esimerkki 1: Hanki uusin päivämäärä

hae uusin päivämäärä

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

Esimerkki 2: Hae uusimman päivämäärän kuukausi

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

Lyhyt selitys

Ensimmäisessä esimerkissä Math.max JavaScript-menetelmä tekee työn.

Jos haluat saada päivämäärän resuksi lt, päivämääräobjekti luodaan käyttämällä uutta päivämäärä () .

Toisessa esimerkissä päivämääräobjekti on määritetty muuttujalle , sitten getMonth () JavaScript-menetelmää käytetään kuukauden indeksin saamiseen.Muista, että JavaScript käyttää 0 alkuelementtiä, joten 0 on tammikuu, 1 helmikuulle ja niin edelleen.

Viitteet

kommentit

  • i) Lähetetäänkö date1, date2 numeroina (yleensä: 54243)? ii) Yritin nyt purkaa date2 -kuukauden käyttämällä date2.getMonth(), mutta kun solu on 01/12/2015 se palauttaa arvot 10 ja 11 arvoille 02/12/2015. Luulen, että se on ' s aikavyöhykkeen takia. Taulukkofunktio month() on niin paljon yksinkertaisempi.
  • Google Sheets käsittelee päivämääriä sarjanumeroina, jotka ovat samat kuin JavaScript, mutta jokaisella on erilainen aloituspäivä. Joten, jos haluat käyttää JavaScript-päivämäärätoimintoja, sinun on ensin muunnettava laskentataulukon päivämäärä JavaScript-päivämääräksi. Kuten jo huomasit, helpompi polku on käyttää laskentataulukon toimintoja laskentataulukon päivämäärien ja JavaScript-toimintojen käsittelemiseen JavaScript-päivämääriä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *