Google 工作表 API 向文本添加单引号

Google Sheets API adding single qoute to text

您好,我是 运行 Google APi 脚本,用于将数据输入 sheet 但对于某些文本(数字、日期、布尔值),它添加了一个 '在例如 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

有什么想法吗?

这个问题,是因为你的数据在stringValue.

中被当成字符串处理了

您需要为不同的数据类型使用其他类型的值,

stringValue:

  • "A String", #代表一个字符串值。
  • 不包括前导单引号。例如,如果用户在 UI 中键入 '123,这将表示为 "123"stringValue

boolValue:

  • True or False,#代表一个布尔值。

numberValue:

  • 3.14, #表示double值
  • 注意:日期、时间和日期时间以“序列号”格式表示为双精度值。

formulaValue:

  • "A String", #代表一个公式。

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]

有关更多详细信息,请参阅文档here