Saya menggunakan API lembar Google untuk mendapatkan nilai dari kumpulan data dengan nilai yang tidak diketahui. Saya perlu mencari tahu tipe data dari setiap nilai yang dikembalikan (number, boolean, string
atau datetime
).
API akan mengembalikan angka sebagai number
. Saya dapat memeriksa nilai boolean
dalam string
dan sebaliknya mengembalikan nilai sebagai tipe string
. Saya membutuhkan cara yang kuat untuk menentukan apakah string harus bertipe datetime
.
Google Sheets tampaknya mengetahui tipe data setiap sel, tetapi saya tidak bisa mendapatkan API untuk mengembalikan tipe data sel. Adakah yang tahu jika saya bisa melakukan ini, apakah mungkin? Atau apakah saya perlu memeriksa setiap string menggunakan ekspresi reguler untuk kemungkinan format datetime
dan memaksa string ke tanggal jika cocok?
1 menjawab
Anda dapat mengambil format sel menggunakan sheets.spreadsheets.get dari Sheets API v4. Dalam kasus Anda, Anda dapat menggunakan sheets(data(rowData(values(userEnteredFormat/numberFormat,userEnteredValue)),startColumn,startRow))
sebagai bidang.
Misalnya, ketika Anda ingin mengambil format sel "A1", Anda dapat menggunakan titik akhir sebagai berikut.
Titik akhir:
GET https://sheets.googleapis.com/v4/spreadsheets/### spreadsheet ID ###?ranges=sheet1!a1%3Aa1&fields=sheets(data(rowData(values(userEnteredFormat%2FnumberFormat%2CuserEnteredValue))%2CstartColumn%2CstartRow))
Hasil berikut adalah tanggapan yang diambil untuk number, boolean, string and datetime
.
Hasil 1 :
Pada sampel ini, nilai dan formatnya masing-masing adalah "123" dan angka.
{
"sheets": [
{
"data": [
{
"rowData": [
{
"values": [
{
"userEnteredValue": {
"numberValue": 123
},
"userEnteredFormat": {
"numberFormat": {
"type": "NUMBER",
"pattern": "#,##0.00"
}
}
}
]
}
]
}
]
}
]
}
Hasil 2:
Pada sampel ini, nilai dan formatnya masing-masing adalah "true" dan boolean yang terdeteksi secara otomatis.
{
"sheets": [
{
"data": [
{
"rowData": [
{
"values": [
{
"userEnteredValue": {
"boolValue": true
}
}
]
}
]
}
]
}
]
}
Hasil 3:
Pada sampel ini, nilai dan formatnya masing-masing adalah "123" dan string.
{
"sheets": [
{
"data": [
{
"rowData": [
{
"values": [
{
"userEnteredValue": {
"stringValue": "123"
},
"userEnteredFormat": {
"numberFormat": {
"type": "TEXT"
}
}
}
]
}
]
}
]
}
]
}
Hasil 4 :
Pada sampel ini, nilai dan formatnya masing-masing adalah "2017/10/10 1:23:45" dan datetime.
{
"sheets": [
{
"data": [
{
"rowData": [
{
"values": [
{
"userEnteredValue": {
"numberValue": 43018.05815972222
},
"userEnteredFormat": {
"numberFormat": {
"type": "DATE",
"pattern": "yyyy/MM/dd"
}
}
}
]
}
]
}
]
}
]
}
numberValue
adalah nomor seri.
Jika saya salah memahami pertanyaan Anda, saya minta maaf.