如何读取获取的单元格数据的值作为日期谷歌工作表API

时间:2017-02-14 01:46:05

标签: python date date-formatting google-sheets-api

我有一个电子表格,其日期格式为“1月30日”等,但具有实际日期值。

enter image description here

我使用python google Sheets API获取数据,如下所示:

def get_spreadsheet_sheets(service, spreadsheetId):
    spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheetId).execute()
    dateCell = "C15"
    for sheet in spreadsheet['sheets']:
        sheetTitle = sheet['properties']['title']
        rangeName = "%s!%s" % (sheetTitle, dateCell)
        result = service.spreadsheets().values().get(
            spreadsheetId=spreadsheetId, range=rangeName).execute()
        values = result.get('values',[])

值给了我'1月30',我想实际读作1/30/2017 ..我怎么能这样做?

更新

深入挖掘spreadsheets.value.get http documentation(对应于python api客户端方法引用here我了解到我可以将valueRenderOption的选项设为UNFORMATTED_VALUE .. < / p>

然而,当我跑步时,我得到Jan 30的这个奇怪数字:42765

enter image description here

这个号码的格式是什么?我知道这不是一个unix时间戳b / c转换它会返回一个非感性的日期

更新2:解决方法

此代码有效,但使用python日期格式(它还假设年份是当前年份......但显然并非总是如此):

def get_spreadsheet_sheets(service, spreadsheetId):
    spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheetId).execute()
    dateCell = "C15"
    for sheet in spreadsheet['sheets']:
        sheetTitle = sheet['properties']['title']
        rangeName = "%s!%s" % (sheetTitle, dateCell)
        result = service.spreadsheets().values().get(
            spreadsheetId=spreadsheetId, range=rangeName).execute()
        values = result.get('values',[])
        dateStr = "%s %s" % (values[0][0], datetime.date.today().year)
        cellDate = datetime.datetime.strptime(dateStr, '%b %d %Y')
        print(cellDate)

1 个答案:

答案 0 :(得分:4)

“奇怪的数字”,它被称为“序列化日期时间值”或“日期序列值”。显示为日期(yyyy-mm-dd)的0值为1899-12-30。整数是天,分数是小时,分钟等。

相关:Converting Google spreadsheet date into a JS Date object?

参考文献:

h / t Sam Berlin