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ä
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
- Mukautetut toiminnot Google Sheetsissä – Google Apps Script Guides
- Vertaa kahta päivämäärää JavaScriptin – StackOverflow
kommentit
- i) Lähetetäänkö
date1
,date2
numeroina (yleensä: 54243)? ii) Yritin nyt purkaadate2
-kuukauden käyttämällädate2.getMonth()
, mutta kun solu on01/12/2015
se palauttaa arvot 10 ja 11 arvoille02/12/2015
. Luulen, että se on ' s aikavyöhykkeen takia. Taulukkofunktiomonth()
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ä.