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?

5
Josh 9 Oktober 2017, 16:00

1 menjawab

Jawaban Terbaik

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.

6
Tanaike 10 Oktober 2017, 01:33
Anda mengerti dengan sempurna. Terima kasih!!
 – 
Josh
10 Oktober 2017, 16:57
Aku lega mendengarnya. Terima kasih kembali.
 – 
Tanaike
11 Oktober 2017, 01:04