首页 > 解决方案 > Google Sheets API 将单个 qoute 添加到文本

问题描述

嗨,我正在运行 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

有任何想法吗?

标签: google-apigoogle-sheets-api

解决方案


对于这个问题,这是因为您的数据在stringValue.

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

stringValue

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

boolValue

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

numberValue

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

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]

有关更多详细信息,可以在此处找到文档


推荐阅读