如何使用 Google Docs API 添加页眉/页脚

Sli*_*ime 5 google-docs google-docs-api

我想使用Google Docs API将页眉和页脚添加到现有的 Google Docs 文件。

查看documents.batchUpdate链接),我们可以插入文本、替换文本、添加图像和表格等,方法是在 JSON 有效负载中使用 等对象提及它们replaceAllTextinsertText但我找不到任何插入页眉和页脚的方法。

问题1:如何添加页眉和页脚?

问题2:如何为文档首页添加不同的页眉/页脚?

如果不可能,我们将非常感谢建议使用任何其他 API 或方法(例如使用 MS Word)。先感谢您。

Tan*_*ike 4

这个答案怎么样?

问题一:

  • 您想要将页眉和页脚添加到 Google 文档。

关于这个问题,下面的流程怎么样?

流动:

  1. 首先,需要使用浏览器手动打开Goog​​le文档中的页眉和页脚。这样,似乎可以创建页眉ID和页脚ID。

    • 即使文档只有一页,当选中“首页不同”时,会自动为页眉和页脚创建第一页和其他页面的 2 个 ID。
      • 我认为这可能是当前的规范。
    • 当第一页和第二页的页眉和页脚的示例文本设置不同时,您可以轻松找到ID。
  2. 下一步,它使用Docs API 的documents.get 方法检索页眉ID 和页脚ID。终点如下。

     GET https://docs.googleapis.com/v1/documents/{documentId}?fields=footers%2Cheaders
    
    Run Code Online (Sandbox Code Playgroud)
    • 从该结果中,可以检索页眉 ID 和页脚 ID。
    • 您可以看到页眉和页脚的 2 个 ID。
      • 当您手动设置页眉和页脚文本时,如果选中“不同首页”,则每个 ID 均可用于第一页和除第一页之外的其他页面。(这是问题 2 的答案。)
  3. 它使用Docs API的documents.batchUpdate方法更新页眉和页脚。端点和请求正文如下。

     POST https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate
    
     {
      "requests": [
       {
        "insertText": {
         "location": {
          "segmentId": "kix.#####",
          "index": 1
         },
         "text": "sample text"
        }
       }
      ]
     }
    
    Run Code Online (Sandbox Code Playgroud)
    • kix.#####of"segmentId": "kix.#####"是页眉 ID 和页脚 ID。这样就可以设置文本了。
    • index是插入文本的位置。

问题2:

  • 您想知道如何设置第一页和其他页之间的不同值。

关于这个问题,下面的流程怎么样?

流动:

  1. 首先,需要使用浏览器手动打开Goog​​le文档中的页眉和页脚。这样,似乎可以创建页眉ID和页脚ID。
    • 即使文档只有一页,当选中“首页不同”时,会自动为页眉和页脚创建第一页和其他页面的 2 个 ID。
    • 当第一页和第二页的页眉和页脚的示例文本设置不同时,您可以轻松找到ID。

之后的流程与问题1的答案相同。

笔记:

  • 当您请求上述端点时,请使用 OAuth2 和服务帐户检索到的访问令牌。请使用https://www.googleapis.com/auth/documents作为范围。
  • 关于创建页眉和页脚的 ID,我尝试仅使用 API 对新文档进行创建。但在现阶段,我还无法实现。我道歉。
    • 目前结果如下。使用文档服务和 Google Apps 脚本添加页眉和页脚时,不会创建 ID。仅当手动打开页眉和页脚时,才会创建 ID。
    • 从这个结果来看,在现阶段,我认为这可能就是规范。

参考:

如果我误解了你的问题并且这不是你想要的方向,我很抱歉。

更新于 2022 年 1 月 1 日:

当我回答这个问题时,无法使用 Google Docs API 添加页眉和页脚。在现阶段,可以使用 Google Docs API 添加这些内容。我有一位联系人要求更新此信息。因此,我添加了使用 Google Docs API 将页眉和页脚添加到 Google 文档的方法。

在现阶段,当您想使用Docs API向Google文档添加页眉和提示符时,似乎需要使用2次API调用,因为似乎无法手动给出页眉ID和页脚ID。

流程(标题):

1. 创建标题。

URL 和请求正文如下。

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

{
  "requests": [
    {
      "createHeader": {
        "sectionBreakLocation": {
          "index": 0
        },
        "type": "DEFAULT"
      }
    },
  ]
}
Run Code Online (Sandbox Code Playgroud)

由此,返回以下响应。

{
  "replies": [
    {
      "createHeader": {
        "headerId": "kix.###"
      }
    }
  ],
  "writeControl": {
    "requiredRevisionId": "###"
  },
  "documentId": "###"
}
Run Code Online (Sandbox Code Playgroud)

2. 输入文字。

当你想将文本插入标题时,它使用headerId如下。

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

{
  "requests": [
    {
      "insertText": {
        "location": {
          "segmentId": "kix.###", <--- headerId
          "index": 0
        },
        "text": "sample text"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

流程(页脚):

1. 创建标题。

URL 和请求正文如下。

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

{
  "requests": [
    {
      "createFooter": {
        "type": "DEFAULT"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

由此,返回以下响应。

{
  "replies": [
    {
      "createFooter": {
        "footerId": "kix.###"
      }
    }
  ],
  "writeControl": {
    "requiredRevisionId": "###"
  },
  "documentId": "###"
}
Run Code Online (Sandbox Code Playgroud)

2. 输入文字。

当你想将文本插入标题时,它使用footerId如下。

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

{
  "requests": [
    {
      "insertText": {
        "location": {
          "segmentId": "kix.###", <--- footerId
          "index": 0
        },
        "text": "sample text"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

参考:

  • @SlickSlime:仅供参考,最新的 Google Docs API 提供了一个新请求 [CreateHeaderRequest](https://developers.google.com/docs/api/reference/rest/v1/documents/request#CreateHeaderRequest)。这可以用来创建一个新的标头。创建新标头后,您可以使用 [InsertTextRequest](https://developers.google.com/docs/api/reference/rest/v1/documents/request#inserttextrequest) 添加内容 (2认同)