Egyéni függvényt szeretnék meghatározni a Google Sheet-ben. Ennek a funkciónak valami nagyon egyszerű dolgot kellene tennie, mégsem sikerült megtalálni, hogyan kell csinálni. Nagyon összetévesztem az összes választ, amit olvastam, mert nem találok egyértelmű utalást a dátumokkal való foglalkozásra a google szkriptekben.

Megértésem szerint az alapvető dátummanipulációk a következőkkel végezhetők el:

  • new Date(): amit megértek, meghatároz egy objektumot, amelynek vannak bizonyos tulajdonságai. Nem tudom, hogyan kell használni a cella dátumát és átalakítani mint ilyen objektum.
  • Utilities.formatDate(): ez a karakterlánc nak tekintett dátum formátumának megváltoztatására szolgál.
  • a könyvtár Moment ( http://momentjs.com/ )

Végül hogyan adhatok meg két dátumot (pl. 31/01/2016), és mondjuk megtalálhatom a kettő között a maximumot, és kivonhatom az első hónapját egyet?

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

Az is érdekel, hogy valaki meg tudja-e magyarázni a dátumok kezelésének vázlatát, vagy jó utalást tud-e megadni.

Megjegyzések

  • Lásd: válasz : Szergej insas a következőre: A helyes időértékek olvasása a Google Táblázatból
  • Köszönöm. Nincs más út? ' hihetetlenül bonyolultnak tűnik például egy dátum hónapjának kivonása! Ráadásul figyelembe kell vennie az időzónát … Ez ' az egyszerű (rögzített) dátumú műveletekhez csavart bit.
  • A következőre összpontosított választ adtam hozzá: a kitett eset kódja, de a kérdés két tág kérdés (dátummanipuláció). Talán el kell indítania a JavaScript kódrészleteket és az online tanfolyamokat.
  • @Rub é n Értem. Nem akartam " írási kódot feltenni nekem ", ezért általános információkat kerestem, amelyeket nem igazán találtam. Szergej insas ' az Ön által megjelölt bejegyzés hasznos.
  • A JavaScript általános információival kapcsolatban lásd: developer.mozilla. org / en-US / docs / Web / JavaScript és a Google Apps Script-et illetően lásd: developers.google.com/apps-script .

Válasz

A dátumidő értékeinek beolvasása és beállítása

Valahányszor a parancsfájl hívja a .getValue() dátumként, dátum-időként vagy időtartamként formázott cellán JavaScript Date objektumot kap . Ezután az adott MDN oldalon felsorolt különféle módszereket alkalmazhatja erre az objektumra, ideértve a hónap getMonth() -t is. Példa:

 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 

Ezzel szemben a setValue használatával hozzárendelhet egy Dátum objektumot egy cellához, és automatikusan formázva.

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

Időzónák

A Google Táblázatok időbélyegzője helyi időzónában van, amelyet a Fájl> Táblázat beállításai menüpontban állíthat be. A szkript időzónán belül is működik, amely eltérő lehet , és a Fájl> Projekt tulajdonságai alatt található a szkriptszerkesztőben. Ha ezek az időzónák nem értenek egyet, akkor problémája lesz az időbélyegekkel.

Annak ellenőrzéséhez, hogy az időzónák megegyeznek-e, manuálisan összehasonlíthatja mindkettőt, vagy tehet ilyet:

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

Ez adja meg a képletet =date(2015,1,1) az A1 cellában. Az eredmény 2015-01-01 00:00:00 lesz a táblázat időzónájában. Ezután a szkript megkapja a dátumot és kivonja az órákat a szkript helyi idejéből. Ha az időzónák megegyeznek, akkor a 0.0-t kell látnia a napló.

Megjegyzések

  • köszönöm, dolgozzon nekem, egy további kérdés: szeretnék ellenőrizni Egy csomó cellát, például tartományt (2, 1, 30, 20) .getValues; – hogyan lehet ezt elérni?

Válasz

Rövid válasz

Az alábbiakban két egyéni függvényt mutatunk be példaként arra, hogy a Google Táblázatok és a Google Apps Script hogyan működhet a dátumokkal.

1. példa: Szerezze be a legújabb dátumot

megkapja a legújabb dátumot

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

2. példa: Szerezd meg a legújabb dátum hónapját

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

Rövid magyarázat

Az első példában a Math.max JavaScript módszerrel végezhető el a feladat lt, egy dátumobjektum új dátum () használatával jön létre.

A második példában dátumobjektumot rendelünk egy változóhoz , akkor a getMonth () JavaScript metódust használják a hónap indexének lekérésére.Ne feledje, hogy a JavaScript a 0 elemet használja a kiinduló elemhez, tehát 0 január, 1 februárra és így tovább.

Hivatkozások

Megjegyzések

  • i) date1, date2 átadják-e számként (általában: 54243)? ii) Most megpróbáltam kivonni a date2 hónapot a date2.getMonth() használatával, de amikor a cella 01/12/2015 értéke 10 és 11 a 02/12/2015 esetén. Azt hiszem, ' s az időzóna miatt. A month() lapfunkció sokkal egyszerűbb.
  • A Google Táblázatok sorszámozott dátumként kezeli a dátumokat, ugyanúgy, mint a JavaScript, de mindegyiknek más a kezdési dátuma. Tehát, ha JavaScript dátumfüggvényeket szeretne használni, először konvertálja a táblázat dátumát JavaScript dátumra. Amint már észrevette, a könnyebb út a táblázatfüggvények használata a táblázat dátumainak kezelésére, a JavaScript függvények kezelése a JavaScript dátumok kezelésére.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük