有没有办法在Google Docs API中替换文本的URL链接?

问题描述 投票:1回答:1

我开始在Python中探索Google Docs API。除了一件事,它几乎可以做我想做的一切。

我可以替换文档的文本,但我无法更改超链接的值。

意思是如果链接看起来像这样:a link,我可以更改文本a link的值,但不能更改目标URL。

我一直在阅读文档,但我找不到任何相关信息。这可能是一个缺失的功能还是我错过了这样做的方法?

google-docs-api
1个回答
3
投票

您可以使用Google Docs API中的batchupdate方法的UpdateTextStyleRequest修改超链接。这时,请设置LinkTextStyle的属性。

Endpoint

POST https://docs.googleapis.com/v1/documents/{file ID}:batchUpdate

Request body:

{
 "requests": [
  {
   "updateTextStyle": {
    "textStyle": {
     "link": {
      "url": "https://sampleUrl"  # Please set the modified URL here.
     }
    },
    "range": {
     "startIndex": 1,
     "endIndex": 2
    },
    "fields": "link"
   }
  }
 ]
}

Note:

  • 根据您的问题,我可以理解您已经使用过Google文档API,并且可以修改链接文本的文本。我认为您可以使用上面的请求正文和您拥有的脚本来修改链接。

References:

如果这对你的情况没用,我道歉。

编辑:

  • 您想要使用超链接检索文本。

从您的回复评论中,我可以像上面那样理解。当我理解正确时,您可以使用documents.get方法检索它。在这种情况下,当使用fields时,响应变得易于阅读。

Endpoint:

GET https://docs.googleapis.com/v1/documents/{file ID}?fields=body(content(paragraph(elements(endIndex%2CstartIndex%2CtextRun(content%2CtextStyle%2Flink%2Furl)))))
  • 在此端点中,body(content(paragraph(elements(endIndex,startIndex,textRun(content,textStyle/link/url)))))用作fields

Sample response:

例如,当以下文本放在Google文档中并且def有一个超链接时,

abc
def

回应如下。从以下结果中,您可以检索文本的位置,并可以检索超链接。使用此方法,您可以修改超链接。

{
  "body": {
    "content": [
      {},
      {
        "paragraph": {
          "elements": [
            {
              "startIndex": 1,
              "endIndex": 5,
              "textRun": {
                "content": "abc\n",
                "textStyle": {}
              }
            }
          ]
        }
      },
      {
        "paragraph": {
          "elements": [
            {
              "startIndex": 5,
              "endIndex": 8,
              "textRun": {
                "content": "def",
                "textStyle": {
                  "link": {
                    "url": "https://sample/"
                  }
                }
              }
            },
            {
              "startIndex": 8,
              "endIndex": 9,
              "textRun": {
                "content": "\n",
                "textStyle": {}
              }
            }
          ]
        }
      }
    ]
  }
}

Reference:

© www.soinside.com 2019 - 2024. All rights reserved.