【问题标题】:How to determine the data type of values returned by Google Sheets API如何确定 Google Sheets API 返回的值的数据类型
【发布时间】:2018-03-20 16:53:16
【问题描述】:

我正在使用 Google 表格 API 从具有未知值的数据集中获取值。我需要弄清楚每个返回值的数据类型(number, boolean, stringdatetime)。

API 将返回数字为number。我可以在string 中检查boolean 值,否则将值作为string 类型返回。我需要一种可靠的方法来确定字符串是否应为datetime 类型。

Google 表格似乎知道每个单元格的数据类型,但我无法让 API 返回单元格数据类型。有谁知道我是否可以这样做,有可能吗?或者我是否需要使用正则表达式检查每个字符串是否有可能的datetime 格式,并在匹配时将字符串强制为日期?

【问题讨论】:

    标签: datetime google-sheets type-conversion google-sheets-api


    【解决方案1】:

    您可以使用 Sheets API v4 的sheets.spreadsheets.get 检索单元格格式。在您的情况下,您可以使用 sheets(data(rowData(values(userEnteredFormat/numberFormat,userEnteredValue)),startColumn,startRow)) 作为字段。

    例如,当您要检索“A1”的单元格格式时,可以使用如下端点。

    端点:

    GET https://sheets.googleapis.com/v4/spreadsheets/### spreadsheet ID ###?ranges=sheet1!a1%3Aa1&fields=sheets(data(rowData(values(userEnteredFormat%2FnumberFormat%2CuserEnteredValue))%2CstartColumn%2CstartRow))
    

    以下结果是为 number, boolean, string and datetime 检索到的响应。

    结果一:

    在此示例中,值和格式分别为“123”和数字。

    {
     "sheets": [
      {
       "data": [
        {
         "rowData": [
          {
           "values": [
            {
             "userEnteredValue": {
              "numberValue": 123
             },
             "userEnteredFormat": {
              "numberFormat": {
               "type": "NUMBER",
               "pattern": "#,##0.00"
              }
             }
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }
    

    结果 2:

    在此示例中,值和格式分别为“真”和自动检测到的布尔值。

    {
     "sheets": [
      {
       "data": [
        {
         "rowData": [
          {
           "values": [
            {
             "userEnteredValue": {
              "boolValue": true
             }
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }
    

    结果 3:

    在此示例中,值和格式分别为“123”和字符串。

    {
     "sheets": [
      {
       "data": [
        {
         "rowData": [
          {
           "values": [
            {
             "userEnteredValue": {
              "stringValue": "123"
             },
             "userEnteredFormat": {
              "numberFormat": {
               "type": "TEXT"
              }
             }
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }
    

    结果 4:

    在此示例中,值和格式分别为“2017/10/10 1:23:45”和日期时间。

    {
     "sheets": [
      {
       "data": [
        {
         "rowData": [
          {
           "values": [
            {
             "userEnteredValue": {
              "numberValue": 43018.05815972222
             },
             "userEnteredFormat": {
              "numberFormat": {
               "type": "DATE",
               "pattern": "yyyy/MM/dd"
              }
             }
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }
    

    numberValue 是序列号。

    如果我误解了你的问题,我很抱歉。

    【讨论】:

    • 你完全理解。谢谢!!
    • @Josh 听到这个我松了一口气。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    相关资源
    最近更新 更多