如何在 google 工作表中显示 formattedValue 而不是 userEnteredValue?

How to show a formattedValue instead of the userEnteredValue in google sheets?

我一直在尝试在服务帐户的 google 工作表的单元格中添加一个值,并向查看者显示格式化的文本。例如,该值可以是 1,但我会显示 "John" 而不是它。 所以我按照文档在 batch_update 中找到了请求 updateCell,其中有一个选项可以显示 "formattedValue".

formattedValue

string

The formatted value of the cell. This is the value as it's shown to the user. This field is read-only.

这就是我尝试过的-

req = []

req.append({
         "updateCells": {
              "rows": [
                  {
                     "values": [
                        {
                           "userEnteredValue": {
                                "numberValue": 17
                           },
                           "formattedValue": "ThisShouldBeShownToTheUser",
                           "userEnteredFormat": {
                                 "horizontalAlignment": "CENTER",
                                 "verticalAlignment": "MIDDLE"            
                           },
                        }
                     ]
                  }
               ],
               "fields": "*",
               "range": {
                     "sheetId": sheet.get_worksheet(0).id,
                     "startRowIndex": 0,
                     "endRowIndex": 1,
                     "startColumnIndex": 0,
                     "endColumnIndex": 1
               }
          }
      })

sheet.batch_update({"requests":req})

但它不起作用并显示 userEnteredValue。我究竟做错了什么?或者这不是 formattedValue 应该做的?如果是这样,那我应该怎么做才能完成我的任务?

  • 您想将 17 的值作为原始值,并希望将 ThisShouldBeShownToTheUser 显示为单元格中的显示值。
  • 您想通过 python 使用 gspread 来实现此目的。

如果我的理解是正确的,这个答案怎么样?

修改点:

  • 为了达到上述目的,请使用numberFormat代替formattedValue

当你的request body修改后,变成如下。

修改后的请求正文:

req.append({
    "updateCells": {
        "rows": [{
            "values": [{
                "userEnteredValue": {
                    "numberValue": 17
                },
                "userEnteredFormat": {
                    "horizontalAlignment": "CENTER",
                    "verticalAlignment": "MIDDLE",
                    "numberFormat": {
                        "pattern": "\"ThisShouldBeShownToTheUser\"",
                        "type": "NUMBER"
                    }
                }
            }]
        }],
        "fields": "*",
        "range": {
            "sheetId": sheet.get_worksheet(0).id,
            "startRowIndex": 0,
            "endRowIndex": 1,
            "startColumnIndex": 0,
            "endColumnIndex": 1
        }
    }
})

注:

  • 关于formattedValue,例如,将日期对象放入单元格并设置日期的格式时,可以使用formattedValue而不是日期对象来检索显示值。我认为这与getDisplayValue()的方法相同。 Ref

参考文献: