8

我的电子表格中有三列。第一个是日期,第二个和第三个是简单的字符串。

当我批量上传我的数据时valueInputOption = "RAW",我的日期列得到了错误的结果。所有日期前面都有一个看不见的撇号。字符串列没问题。

当我使用valueInputOption = "USER_ENTERED"所有日期时都很好,但其他值不是被解释为实际值,而是被解释为谷歌解析的值。例如,字符串“2-3-4”将表示为 02/04/2004 或类似的东西。

我希望数据列表示为USER_ENTERED,字符串列表示为RAW.

有没有办法valueInputOption为单元格(列)设置?

4

2 回答 2

11

我找到了答案。

为了使所有需要的数据都表示为字符串,您应该:

  • 设置 valueInputOption = USER_ENTERED;
  • 在它前面加上撇号,就像这个'。

在这种情况下,其他列类型将根据 Google 自己的算法自动确定,并且单元格前面带有 ' 符号的列将完全按照您输入的方式显示

当所有电子表格列都设置了自动类型时,它就可以工作。不确定其他格式类型的列会发生什么。

于 2016-06-15T05:47:46.987 回答
0

最好用代码在实践中展示这一点

SERVICE_ACCOUNT_FILE = "wydupa15.json"
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
SAMPLE_SPREADSHEET_ID = "1oEfhwe46ZPPpBgr_LYfVZAzJWV-enZHfW8Tp2RsYhvQ"

CRED = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)

service = discovery.build('sheets', 'v4', credentials=credentials)

# The A1 notation of the values to update.
RANGE = 'Test1!A5:C5'  # TODO: Update placeholder value.

result = service.spreadsheets().values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range=RANGE).execute()

print("Current values in a given area:",result)

# ---inserting DATA - GET function ----------------------------------------------

values = result.get('values', [])

AAA = [['A', 'b', 5220]]

request = service.spreadsheets().values().update(spreadsheetId=SAMPLE_SPREADSHEET_ID,
                                                 range=RANGE,
                                                 valueInputOption='USER_ENTERED',
                                                 body={'values':AAA})
response = request.execute()

# ---------------------------------result------
result = service.spreadsheets().values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range=RANGE).execute()

print("Area value after changes:",result)
于 2022-02-23T10:41:15.750 回答