【问题标题】:Invalid ReplaceNamedRangeContent request无效的 ReplaceNamedRangeContent 请求
【发布时间】:2021-01-27 02:17:33
【问题描述】:

我可以使用 batchUpdate api 成功创建名称范围,但是 replaceNameRangeContent 给出以下错误:

{ "error": { "code": 400, "message": "Invalid requests[0].replaceNamedRangeContent: Named range with ID kix.ydbik9q4xmna contains content that cannot be replaced.", "status": "INVALID_ARGUMENT" } }

对此的要求是:

{ "requests": [ { "replaceNamedRangeContent": { "namedRangeId": "kix.ydbik9q4xmna", "text": "" } } ] }

我是否正确使用了 API?我创建了名称范围,给出了 start/endindex 并命名了它。它创建了我在替换内容帖子中使用的 NameRangeId。

上面的索引范围内有内容。但是,下面是一个空文档的示例文档结构(省略了文档样式等)。我试过了

{
  "requests": [
    {
      "createNamedRange": {
        "range": {
          "startIndex": 1,
          "endIndex": 2
        },
        "name": "ApplicantName"
      }
    }
  ]
}

紧随其后

    {
        "requests": [
        {
            "replaceNamedRangeContent": {
                "namedRangeId": "kix.f7g9w0sr3kyp",
                "text": "Applicant Name"
            }
        }
    ]
}

并得到同样的错误。但是在创建命名范围时,它不会接受除 1 和 2 之外的任何开始/结束索引。

我一定不明白命名范围的实际意图!

示例:

    {
      "title": "Test mule",
      "body": {
        "content": [
          {
        "endIndex": 1,
        "sectionBreak": {
          "sectionStyle": {
            "columnSeparatorStyle": "NONE",
            "contentDirection": "LEFT_TO_RIGHT",
            "sectionType": "CONTINUOUS"
          }
        }
      },
      {
        "startIndex": 1,
        "endIndex": 2,
        "paragraph": {
          "elements": [
            {
              "startIndex": 1,
              "endIndex": 2,
              "textRun": {
                "content": "\n",
                "textStyle": {}
              }
            }
          ],
          "paragraphStyle": {
            "namedStyleType": "NORMAL_TEXT",
            "direction": "LEFT_TO_RIGHT"
          }
        }
      }
    ]
 }

【问题讨论】:

    标签: google-docs-api named-ranges


    【解决方案1】:

    使用"startIndex": 0 创建命名范围时,我可以重现您的错误

    请注意,Google 文档中的段落(以及文本)索引指的是文本中字符的位置,并以 1 开头。

    因此,如果您创建正确指定索引的名称范围,您将不会收到错误消息

    { "error": { "code": 400, "message": "Invalid requests[0].replaceNamedRangeContent: ID 为 kix.ydbik9q4xmna 的命名范围包含无法替换的内容。", "status": "INVALID_ARGUMENT " } }

    创建命名范围的示例请求:

    {
      "requests": [
        {
          "createNamedRange": {
            "range": {
              "startIndex": 5,
              "endIndex": 7
            },
            "name": "test3"
          }
        }
      ]
    }
    

    【讨论】:

    • 感谢您的回复。所以我创建了一个命名范围: { "requests": [ { "createNamedRange": { "range": { "startIndex": 13, "endIndex": 48 }, "name": "ApplicantName" } } ] }段落的开始/结束索引。然后,我为该命名范围执行了 replaceNamedRangeContent。这不正确吗?
    • 在创建范围之前,是否有从索引 13 到 48 的任何内容?可以分享一个示例文档吗?
    • 请查看原帖中添加的详细信息
    • 你说:`但是在创建命名范围时,它不会接受除 1 和 2 之外的任何开始/结束索引。`。但是你也说你的文档是空的(它只有一个换行符)并且最高的 endIndex 是 2!那么您希望如何在现有范围之外创建一个命名范围呢?
    • 在执行replaceNamedRange 请求之前,您需要确保您的名称范围不为空 - 在其中至少输入一个空格。
    猜你喜欢
    • 2014-03-01
    • 2018-08-03
    • 1970-01-01
    • 2016-02-14
    • 2021-09-30
    • 1970-01-01
    • 2017-10-30
    • 2013-09-28
    • 2014-12-11
    相关资源
    最近更新 更多