嗨,我正在运行Google APi脚本,将数据输入到工作表中,但是对于一些文本(数字、日期、布尔值),它在前面添加了一个‘例如,05/01/2021 = '05/01/2021
我正在使用批处理更新:
def turn_into_range(data, SheetId, row,cols):
rows = [{'values': [{'userEnteredValue': {'stringValue': f}} for f in e]} for e in data]
rng = {'sheetId': SheetId, 'startRowIndex': 0, 'startColumnIndex': 0}
fields = 'userEnteredValue'
body = {'requests': [{'updateCells': {'rows': rows, 'range': rng, 'fields': fields}},{
"updateSheetProperties": {
"properties": {
"gridProperties": {
"rowCount": row + 1,
"columnCount": cols
},
"sheetId": SheetId
},
"fields": "gridProperties"
},
}
]}
clean_dict = simplejson.loads(simplejson.dumps(body, ignore_nan=True))
return clean_dict
def post_sheet(service_sheets, spreadsheet_id, body):
request = service_sheets.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body)
response = request.execute()
return response有什么想法吗?
发布于 2021-01-06 13:51:58
对于此问题,这是因为您的数据在stringValue中被视为字符串。
您需要为不同的数据类型使用其他类型的值,
stringValue
'123,这将被表示为stringValue of "123"。boolValue
numberValue
formulaValue
errorValue
尝试将此添加到代码中。
from dateutil.parser import parse
def checkData(data):
if (isinstance(data, bool)):
return 'boolValue'
try:
if (isinstance(data, (int, float)) or parse(data)):
return 'numberValue'
except ValueError:
return 'stringValue'行为:

现在,在代码中使用它:
rows = [{'values': [{'userEnteredValue': {checkData(f): f}} for f in e]} for e in data]
有关更多细节,可以找到文档这里。
https://stackoverflow.com/questions/65594864
复制相似问题