2016-08-09 1 views
1

Вот фрагмент кода:Как использовать ValueRenderOption в Google-API-питон-клиент для Google листов

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) 

У меня нет никаких проблем с получением содержимого ячеек. Моя проблема в том, что они отформатированы (поскольку это значение по умолчанию), и я хочу, чтобы они были UNFORMATTED?

Как установить параметр в запросе оператора return из функции csv_array?

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

Как примечание стороны, есть способ, чтобы получить значение клетки в другой форме, чем в виде строки AST-е изд к списку?

ответ

3

Чтобы установить valueRenderOption из UNFORMATTED_VALUE с клиентом питона, используйте:

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

Кроме того, при использовании UNFORMATTED_VALUE, ответ будет набран, как в листах (например, номера будут цифры, bools будет bools, строки будут строками). Даты являются либо строками, либо цифрами, в зависимости от DateTimeRenderOption, см. Date/Time Serial Numbers Guide для получения дополнительной информации о датах в качестве номеров.

Поскольку значения уже введены правильно, вам не нужно выполнять дополнительный синтаксический анализ с помощью ast или repr.

+0

Первая версия работает. Мне нужно удалить как реестр, так и «ast», чтобы «получить данные, введенные в качестве своего фактического типа, а не всегда как строку», можете ли вы обновить ответ, чтобы я мог его принять? – Sebastien

+0

благодарит за подтверждение! обновленный ответ. –