【问题标题】:Table border in Google Docs APIGoogle Docs API 中的表格边框
【发布时间】:2019-12-05 10:01:23
【问题描述】:

我正在寻找一种使用 API 获取 Google Docs 边框宽度的方法?

我设置了一个包含两个 1 单元表的测试文档。 第一个带有默认边框,第二个带有 0 宽度边框,第三个带有 3 pt 边框。

https://docs.google.com/document/d/1KOiw6bmsNhdOGGr9OZDWHNHrEID5RZncyCRRFFSU_Ok/edit

我使用get request检索文档

我找不到这三个表格在边框宽度方面有什么区别。

根据documentation TableCellStyle 应该有borderTop/Bottom/Left/Right 值,但我不确定我需要做什么才能将它们包含在响应中。

所有 3 个 tableCellStyle 看起来都一样,像这样:

              "tableCellStyle": {
                "rowSpan": 1,
                "columnSpan": 1,
                "backgroundColor": {},
                "paddingLeft": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "paddingRight": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "paddingTop": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "paddingBottom": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "contentAlignment": "TOP"
              }

每个表格单元格包含一个段落样式相同的段落:

                      "borderLeft": {
                        "color": {},
                        "width": {
                          "unit": "PT"
                        },
                        "padding": {
                          "unit": "PT"
                        },
                        "dashStyle": "SOLID"
                      },

更新

我在上面的示例中设置了 API 响应中未显示的表格边框。 我的假设是表格边框反映在响应数据的单元格中,因为表格边框本身没有属性。部分正确,请参阅答案。

【问题讨论】:

  • 您能否提供一个示例文档来复制您的情况?我想确认一下。当然,请删除您的个人信息。
  • 感谢您的回复。不幸的是,我无法从您的回复中复制您的情况。所以我想不出问题和解决方案。我为此道歉。但是我注意到已经发布了答案。我认为它会解决您的问题。
  • @Tanaike 我已经用共享文档更新了这个问题。我没有得到你得到的差异,我也尝试修改文档,从 0 到 3 pt 边框,但响应中记录的唯一变化是我在单元格内更改的描述性文本。
  • 感谢您回复并添加更多信息。我可以确认一下你的情况。在 Google API 中,当值为0 时,会出现不显示属性的情况。例如,这可以在 Sheets API 中看到。 Ref 这可能是当前的规范。我认为关于0 的边框宽度,这就是"width": {"unit": "PT"}, 的原因。关于13 的边框宽度,我可以复制您的问题。我认为这可能是一个错误。 Docs API 现在正在增长。所以这可能会在未来得到解决。
  • 那么作为目前的解决方法,修改边框颜色怎么样?当边框颜色改变时,13 的边框宽度可以包含在 Docs API 的响应值中。关于这个问题,我认为这可能与上述情况有关。因为默认边框颜色是黑色,0, 0, 0 分别代表红色、绿色和蓝色。这样,边框颜色的rgbColor 就没有属性了。

标签: border google-docs-api


【解决方案1】:

很明显,谷歌文档 API 中存在一个错误。我发现了一个错误报告:(https://issuetracker.google.com/186012454)

我生成了一个document:在那里我增加了表格边框的宽度和颜色。

左上角单元格的 TableCellStyle 元素为 nil。 与表格单元格链接的 Content.Paragraph 元素的边框属性也是 nil。

【讨论】:

    【解决方案2】:

    来自TableCellStyle documentation

    继承的表格单元格样式在此消息中表示为未设置的字段。表格单元格样式可以继承表格样式。

    在这种情况下,TableCellStyle 继承了默认的borderLeft、borderRight、borderTop 和borderBottom 的默认样式,其表示形式如下:

    "borderTop": {
      "color": {
        "color": {
          "rgbColor": {}
        }
      },
      "width": {
        "magnitude": 1,
        "unit": "PT"
      },
      "dashStyle": "SOLID"
    }
    

    本质上,如果您尝试获取边框宽度,您必须首先检查该边框字段是否存在于您的数据中。如果没有,您将为其设置默认值 (1 PT)。例如,使用带有ternary operator的JavaScript:

    var borderTopMagnitude = tableCellStyle.borderTop ? tableCellStyle.borderTop.width.magnitude : 1;
    var borderBottomMagnitude = tableCellStyle.borderBottom ? tableCellStyle.borderBottom.width.magnitude : 1;
    var borderLeftMagnitude = tableCellStyle.borderLeft ? tableCellStyle.borderLeft.width.magnitude : 1;
    var borderRightMagnitude = tableCellStyle.borderRight ? tableCellStyle.borderRight.width.magnitude : 1;
    

    【讨论】:

    • “TableStyle”只有一个属性,“tableColumnProperties”。查看文档/响应没有要继承的相关属性。唯一提到“幅度”的是字体大小。
    • 你在哪里找到的默认样式?两个表中只有一个使用默认单元格样式,另一个应该有一些覆盖属性?
    • @hultqvist 如果您将边框的宽度修改为 1 以外的任何值,是的,它会被覆盖(也可以通过更改其默认颜色或破折号样式)。可以通过使用 API 或 UI 手动在 Docs 中创建元素来推断默认样式(没有关于它的文档)。干杯
    • @hultqvist here 您可以看到 0pt 边框表(左)和 1pt 边框表(右)之间的区别。在左侧,定义了borderTop 等,但它们的width 属性设置为{"unit": "PT"}(注意它没有指定幅度——默认为0)。在右边,没有定义borderTop等,而是使用默认的边框(宽度为1PT)。我希望这是有道理的。干杯
    【解决方案3】:

    从新表开始,按顺序应用以下内容。

    1. 更改表格边框样式不会反映在 API 响应中。

    2. 单个单元格或一次所有单元格的更改将反映在 API 响应中。

    3. 执行第 2 步后,表格边框样式的更改现在将反映在 API 响应中,但仅限于之前单独修改过的单元格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多