如何在谷歌工作表的google-api-python-client中使用ValueRenderOption

Seb*_*ien 1 google-api-python-client google-sheets-api

这是一段代码:

import ast
from oauth2client import file, client, tools
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
from apiclient.discovery import build
from apiclient import discovery

SCOPE = 'https://www.googleapis.com/auth/spreadsheets'
CREDJSON = "some-cred-file-downloaded-from-dev-console.json"

def google_credentials(jsoncred=CREDJSON, scope=SCOPE):
    return ServiceAccountCredentials.from_json_keyfile_name(jsoncred, scope)


def csv_arrays(creds, key):

    (SHEETS, sheets) = sheets_fetch(creds, key)

    wks = sheets
    def create_filename(arg):
        filename = key.prefix + "_" + arg.get("properties, {}).get("title","Sheet1")
        filename = filename.replace(" ", "_")
        print (filename)
        return filename
    return [(create_filename(ws), ast.literal_eval(repr(SHEETS.spreadsheets().values().get(spreadsheetId=key.key, range=(ws.get("properties", {}).get("title", "Sheet1"))).execute().get('values',[])))) for ws in wks] #.decode("utf-8")

def sheets_fetch(creds, key):
    print('Now doing:', key)
    SHEETS = build('sheets', 'v4', http=creds.authorize(Http()))
    sheet_metadata = SHEETS.spreadsheets().get(spreadsheetId=key.key).execute()
sheets = sheet_metadata.get('sheets', '')

    return (SHEETS, sheets)
Run Code Online (Sandbox Code Playgroud)

获取细胞内容没有问题.我的问题是它们是格式化的(因为这是默认值),我想要它们UNFORMATTED?

如何在csv_array函数的return语句查询中设置选项?

https://developers.google.com/sheets/reference/rest/v4/ValueRenderOption

作为旁注,有没有办法以其他方式获取单元格值而不是作为列表的字符串?

Sam*_*lin 5

要使用python客户端设置UNFORMATTED_VALUE的valueRenderOption,请使用:

SHEETS.spreadsheets().values().get(spreadsheetId=key.key, range=myRange, valueRenderOption='UNFORMATTED_VALUE').execute()

此外,当使用UNFORMATTED_VALUE时,响应将在Sheets中键入(例如,数字将是数字,bool将是bool,字符串将是字符串).日期是字符串或数字,具体取决于DateTimeRenderOption,有关将日期作为数字处理的更多信息,请参阅日期/时间序列号指南.

因为值已经正确输入,所以您不需要使用ast或repr进行任何其他解析.