【问题标题】:How to add Header/Footer to with Google Docs API如何使用 Google Docs API 添加页眉/页脚
【发布时间】:2019-07-19 13:18:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: google-docs google-docs-api


    【解决方案1】:

    这个答案怎么样?

    问题一:

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

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

    流程:

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

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

       GET https://docs.googleapis.com/v1/documents/{documentId}?fields=footers%2Cheaders
      
      • 从这个结果中,可以检索到页眉 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"
          }
         }
        ]
       }
      
      • kix.#####"segmentId": "kix.#####" 是页眉 ID 和页脚 ID。这样就可以设置文本了。
      • index 是插入文本的位置。

    问题2:

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

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

    流程:

    1. 首先需要用浏览器手动打开谷歌文档的页眉和页脚。这样,似乎可以创建页眉 ID 和页脚 ID。
      • 即使Document只有一页,当勾选“第一页不同”时,会自动为页眉和页脚创建第一页和其他页的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 Document 添加页眉和页脚的方法。

    在当前阶段,当您想使用Docs API向Google Document添加header和hooter时,似乎需要使用2个API调用,因为似乎无法手动给出header ID和footer ID。

    流程(标题):

    1。创建标题。

    网址和请求正文如下。

    POST https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate
    
    {
      "requests": [
        {
          "createHeader": {
            "sectionBreakLocation": {
              "index": 0
            },
            "type": "DEFAULT"
          }
        },
      ]
    }
    

    由此,返回以下响应。

    {
      "replies": [
        {
          "createHeader": {
            "headerId": "kix.###"
          }
        }
      ],
      "writeControl": {
        "requiredRevisionId": "###"
      },
      "documentId": "###"
    }
    

    2。输入文字。

    当你想将文本插入到表头时,它使用headerId,如下所示。

    POST https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate
    
    {
      "requests": [
        {
          "insertText": {
            "location": {
              "segmentId": "kix.###", <--- headerId
              "index": 0
            },
            "text": "sample text"
          }
        }
      ]
    }
    

    流(页脚):

    1。创建标题。

    网址和请求正文如下。

    POST https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate
    
    {
      "requests": [
        {
          "createFooter": {
            "type": "DEFAULT"
          }
        }
      ]
    }
    

    由此,返回以下响应。

    {
      "replies": [
        {
          "createFooter": {
            "footerId": "kix.###"
          }
        }
      ],
      "writeControl": {
        "requiredRevisionId": "###"
      },
      "documentId": "###"
    }
    

    2。输入文字。

    当你想将文本插入到表头时,它使用footerId,如下所示。

    POST https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate
    
    {
      "requests": [
        {
          "insertText": {
            "location": {
              "segmentId": "kix.###", <--- footerId
              "index": 0
            },
            "text": "sample text"
          }
        }
      ]
    }
    

    参考资料:

    【讨论】:

    • 谢谢田池。你知道如何调整“页眉边距”吗?我已经添加了一个相同的问题 - stackoverflow.com/questions/57131446/…
    • @Slick Slime 感谢您的回复。我带来的不便表示歉意。我可以问你关于我的答案的问题吗?通过这个,我想修改它。关于你的新问题,在你的问题解决之后,我想考虑一下。因为我不能同时思考这两个问题。我为我糟糕的技能深表歉意。
    • 我仍然想自动创建页眉并向其添加内容。而且我无法在浏览器上打开文档,以便首先创建一个空标题,然后手动检查“不同的首页”,然后以编程方式将内容添加到标题中——这将破坏自动化。有没有办法解决这个问题? @田池
    • @Slick Slime 感谢您的回复。不幸的是,在当前阶段,只有当手动打开页眉和页脚部分时,才会创建 ID。创建 ID 后,用户可以使用 Docs API 访问它们。这似乎是当前的规范。如果您想在当前情况下访问页眉和页脚,作为当前的解决方法,我建议使用 Google Apps Script 创建的 Web Apps 的方法。这样,您可以将 Web 应用程序用作 API。顺便说一句,我向问题跟踪器报告了这个问题。 issuetracker.google.com/issues/138042765
    • @SlickSlime:仅供参考,最新的 Google Docs API 提供了一个新请求 CreateHeaderRequest。这可以用来创建一个新的标题。创建新标头后,您可以使用InsertTextRequest 添加内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    相关资源
    最近更新 更多