当 运行 函数 import_csv 分隔字段时,如何指定 gspread 使用的分隔符?
How can I specify the delimiter that gspread uses when running the function import_csv to separate the fields?
我正在编写一个使用 |
作为分隔符的 .csv 文件。我希望能够指定当 运行 函数 import_csv()
时。我怎样才能做到这一点?为此,我必须使用 gspread 替代方案吗?说实话,我只需要一个代码示例。
我相信你的目标如下。
- 您想使用 gspread 将 CSV 数据放入 Google 电子表格。
- 您想通过提供分隔符来放置 CSV 数据,例如
|
。
- 您已经能够使用表格 API.
获取和输入 Google 电子表格的值
问题和解决方法:
当我看到gspread 的脚本时,似乎import_csv(file_id, data)
使用Drive API 放置CSV 数据。 Ref使用驱动器API时,当前阶段无法手动设置分隔符
因此,在这个答案中,作为一种变通方法,我想建议使用 Sheets API 中的 batchUpdate 方法来实现您的目标。示例脚本如下
示例脚本:
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to put the CSV data.
delimiter = "|" # Please set the delimiter.
csv = open('filename.csv', 'r').read() # Please set the CSV data.
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
body = {
"requests": [
{
"pasteData": {
"data": csv,
"delimiter": delimiter,
"coordinate": {
"sheetId": sheet.id
}
}
}
]
}
spreadsheet.batch_update(body)
- 此脚本将 CSV 数据放入
spreadsheetId
中的 Sheet1
。
- 在这个脚本中,大约
client
,请将它用于您使用 gspread 的实际脚本。
参考文献:
已添加:
根据您的以下回复,
when implementing this it throws me the error: TypeError: Object of type bytes is not JSON serializable
for the variable body
我担心 csv = open('filename.csv', 'r').read()
的值可能是由于您当前问题的原因造成的。所以,我想再添加一个示例脚本。在此示例脚本中,脚本中直接使用了 CSV 数据。
示例脚本:
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to put the CSV data.
delimiter = "|" # Please set the delimiter.
csv = """a1|b1|c1|d1|e1
a2|b2|c2||e2
a3|b3||d3|e3
"""
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
body = {
"requests": [
{
"pasteData": {
"data": csv,
"delimiter": delimiter,
"coordinate": {
"sheetId": sheet.id
}
}
}
]
}
spreadsheet.batch_update(body)
- 在此示例脚本中,
csv
的值作为 |
的分隔符放入电子表格。
我正在编写一个使用 |
作为分隔符的 .csv 文件。我希望能够指定当 运行 函数 import_csv()
时。我怎样才能做到这一点?为此,我必须使用 gspread 替代方案吗?说实话,我只需要一个代码示例。
我相信你的目标如下。
- 您想使用 gspread 将 CSV 数据放入 Google 电子表格。
- 您想通过提供分隔符来放置 CSV 数据,例如
|
。 - 您已经能够使用表格 API. 获取和输入 Google 电子表格的值
问题和解决方法:
当我看到gspread 的脚本时,似乎import_csv(file_id, data)
使用Drive API 放置CSV 数据。 Ref使用驱动器API时,当前阶段无法手动设置分隔符
因此,在这个答案中,作为一种变通方法,我想建议使用 Sheets API 中的 batchUpdate 方法来实现您的目标。示例脚本如下
示例脚本:
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to put the CSV data.
delimiter = "|" # Please set the delimiter.
csv = open('filename.csv', 'r').read() # Please set the CSV data.
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
body = {
"requests": [
{
"pasteData": {
"data": csv,
"delimiter": delimiter,
"coordinate": {
"sheetId": sheet.id
}
}
}
]
}
spreadsheet.batch_update(body)
- 此脚本将 CSV 数据放入
spreadsheetId
中的Sheet1
。 - 在这个脚本中,大约
client
,请将它用于您使用 gspread 的实际脚本。
参考文献:
已添加:
根据您的以下回复,
when implementing this it throws me the error:
TypeError: Object of type bytes is not JSON serializable
for the variablebody
我担心 csv = open('filename.csv', 'r').read()
的值可能是由于您当前问题的原因造成的。所以,我想再添加一个示例脚本。在此示例脚本中,脚本中直接使用了 CSV 数据。
示例脚本:
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to put the CSV data.
delimiter = "|" # Please set the delimiter.
csv = """a1|b1|c1|d1|e1
a2|b2|c2||e2
a3|b3||d3|e3
"""
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
body = {
"requests": [
{
"pasteData": {
"data": csv,
"delimiter": delimiter,
"coordinate": {
"sheetId": sheet.id
}
}
}
]
}
spreadsheet.batch_update(body)
- 在此示例脚本中,
csv
的值作为|
的分隔符放入电子表格。