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)