Saya ingin mendefinisikan fungsi khusus di Google Sheet. Fungsi ini harus melakukan sesuatu yang sangat sederhana, namun saya belum berhasil menemukan cara melakukannya. Saya sangat bingung dengan semua jawaban yang saya baca karena saya tidak dapat menemukan referensi yang jelas tentang berurusan dengan tanggal dalam skrip google.
Dari apa yang saya mengerti, manipulasi tanggal dasar dapat dilakukan dengan:
new Date()
: dari apa yang saya mengerti, itu mendefinisikan objek yang memiliki beberapa properti. Saya tidak tahu cara menggunakan tanggal sel dan mengubahnya sebagai objek.Utilities.formatDate()
: ini untuk mengubah format tanggal yang dilihat sebagai string .- perpustakaan
Moment
( http://momentjs.com/ )
Pada akhirnya, bagaimana saya bisa memasukkan dua tanggal (misalnya 31/01/2016
) dan, katakanlah, menemukan maksimum antara keduanya dan mengekstrak bulan yang pertama?
function myfun(date1,date2) {
// month = month of date 1
// return maximum(date1,date2);
}
Saya juga tertarik jika seseorang dapat menjelaskan garis besar berurusan dengan kencan, atau menunjukkan referensi yang baik.
google-sheets
google-apps-script
dan dipahami
sumber
sumber
Jawaban:
Mendapatkan dan menetapkan nilai datetime
Setiap kali skrip Anda memanggil
.getValue()
sel yang diformat sebagai tanggal, tanggal-waktu, atau durasi, skrip mendapat objek Tanggal JavaScript . Anda kemudian dapat menerapkan berbagai metode yang tercantum pada halaman MDN ke objek ini, termasukgetMonth()
untuk bulan itu. Contoh:Sebaliknya, Anda dapat menetapkan objek Tanggal ke sel menggunakan
setValue
, dan itu akan secara otomatis diformat seperti itu.Zona waktu
Stempel waktu di Google Sheets berada di zona waktu lokal, yang ditetapkan melalui File> pengaturan Spreadsheet. Skrip juga beroperasi dalam zona waktu, yang mungkin berbeda dan ditemukan di bawah File> Properti proyek di editor skrip. Jika zona waktu ini tidak setuju, Anda akan memiliki masalah dengan cap waktu.
Untuk memeriksa apakah zona waktu setuju, Anda dapat membandingkan keduanya secara manual, atau melakukan sesuatu seperti ini:
Ini memasukkan rumus
=date(2015,1,1)
dalam sel A1. Hasilnya adalah 2015-01-01 00:00:00 di zona waktu spreadsheet. Script kemudian mendapatkan tanggal dan mengekstrak jam di waktu lokal skrip. Jika zona waktu setuju, Anda akan melihat 0,0 di log.sumber
Jawaban singkat
Di bawah ini dua fungsi khusus disajikan sebagai contoh bagaimana Google Sheets dan Google Apps Script dapat bekerja dengan tanggal.
Contoh 1: Dapatkan tanggal terbaru
Contoh 2: Dapatkan bulan dari tanggal terbaru
Penjelasan singkat
Dalam contoh pertama metode JavaScript Math.max melakukan pekerjaan.
Jika ingin mendapatkan tanggal sebagai hasil, objek tanggal dibuat dengan menggunakan Date () baru .
Dalam contoh kedua, objek tanggal ditugaskan ke variabel, maka metode JavaScript getMonth () digunakan untuk mendapatkan indeks bulan. Ingatlah bahwa penggunaan JavaScript
0
untuk elemen awal begitu0
juga untuk Januari,1
untuk Februari dan seterusnya.Referensi
sumber
date1
,date2
disahkan sebagai angka (biasanya: 54243)? ii) Saya sekarang mencoba untuk mengekstrak bulandate2
penggunaandate2.getMonth()
tetapi ketika sel01/12/2015
itu mengembalikan 10 dan 11 untuk02/12/2015
. Saya kira itu karena zona waktu. Fungsi lembarmonth()
jauh lebih sederhana.myfunction2
mengembalikan 10 dan ketika maks adalah 02/12/2015, ia mengembalikan 11. Sementara saya OK dengan 11, saya tidak mengerti mengapa pengembalian 10 untuk 01/12/2015. Seperti yang saya katakan, saya percaya ini karena GMT tetapi saya tidak yakin. Apakah saya melewatkan sesuatu?