Google 工作表 API v4 和 valueInputOption
Google Sheets API v4 and valueInputOption
我的电子表格中有三列。第一个是日期,第二个和第三个是简单的字符串。
当我批量上传数据时 valueInputOption = "RAW"
我的日期列得到了错误的结果。所有日期之前都有一个看不见的撇号。字符串列可以。
当我使用 valueInputOption = "USER_ENTERED"
时,所有日期都很好,但其他值不是实际值,而是 Google 解析值。例如,字符串“2-3-4”将表示为 02/04/2004 或类似的东西。
我希望数据列表示为 USER_ENTERED
,字符串列表示为 RAW
。
有什么方法可以为单元格(列)设置 valueInputOption
吗?
我找到了答案。
为了使所有需要的数据都表示为字符串,您应该:
- 设置 valueInputOption = USER_ENTERED;
- 像这个一样在前面加上撇号'。
在这种情况下,其他列的类型将根据 Google 自己的算法自动确定,带有 ' 符号前缀的单元格的列将完全按照您输入的方式显示
当所有电子表格列都设置为自动类型时,它会起作用。不确定其他格式类型的列会发生什么情况。
最好在代码中实际展示这一点
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)
我的电子表格中有三列。第一个是日期,第二个和第三个是简单的字符串。
当我批量上传数据时 valueInputOption = "RAW"
我的日期列得到了错误的结果。所有日期之前都有一个看不见的撇号。字符串列可以。
当我使用 valueInputOption = "USER_ENTERED"
时,所有日期都很好,但其他值不是实际值,而是 Google 解析值。例如,字符串“2-3-4”将表示为 02/04/2004 或类似的东西。
我希望数据列表示为 USER_ENTERED
,字符串列表示为 RAW
。
有什么方法可以为单元格(列)设置 valueInputOption
吗?
我找到了答案。
为了使所有需要的数据都表示为字符串,您应该:
- 设置 valueInputOption = USER_ENTERED;
- 像这个一样在前面加上撇号'。
在这种情况下,其他列的类型将根据 Google 自己的算法自动确定,带有 ' 符号前缀的单元格的列将完全按照您输入的方式显示
当所有电子表格列都设置为自动类型时,它会起作用。不确定其他格式类型的列会发生什么情况。
最好在代码中实际展示这一点
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)