【问题标题】:How to show a formattedValue instead of the userEnteredValue in google sheets?如何在谷歌表格中显示 formattedValue 而不是 userEnteredValue?
【发布时间】:2020-04-22 05:47:45
【问题描述】:

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

格式化值

字符串

单元格的格式化值。这是显示的值 用户。该字段是只读的。

这就是我尝试过的-

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 的值被放入单元格中。但是在您的问题中,您想要检索格式化的值。如果您想检索格式化的值,我认为您可以使用 Sheets API 中的电子表格.values.get 的方法。 Ref 但我无法理解你的问题。那我能问一下你的目标细节吗?
  • @Tanaike 感谢您的回复。我想要做的是向查看者显示一些文本/字符串,而不是单元格的实际值。但我想稍后检索实际值。示例 - 单元格的实际值为 17,但查看者将看到文本“ThisShouldBeShownToTheUser”。我想稍后在我的程序中检索值 17。
  • 感谢您的回复。我不得不为我糟糕的英语水平道歉。我可以理解actual value of the cell is 17。但我无法理解viewer will see the text "ThisShouldBeShownToTheUser"。特别是,我无法理解viewer。我可以问你吗?
  • @Tanaike 也很抱歉我的英语不好。那只是一个比喻。要点是“ThisShouldBeShownToTheUser”是工作表中明显的值,userEnteredValue 将保持隐藏状态。
  • 感谢您的回复。您想从 Google 电子表格的单元格中检索格式化值而不是原始值。如果我的理解是正确的,那么在 Sheets API 中使用电子表格.values.get 的方法怎么样? Ref

标签: google-sheets google-sheets-api gspread


【解决方案1】:
  • 您希望将17 的值作为原始值,并希望将ThisShouldBeShownToTheUser 显示为单元格中的显示值。
  • 您希望使用 gspread 和 python 来实现此目的。

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

修改点:

  • 为了达到上述目的,请使用numberFormat而不是formattedValue

当你的请求正文被修改后,变成如下。

修改后的请求正文:

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

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多