You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Google Docs API为现有文档添加页眉页脚及首页专属设置

刚好我之前折腾过Google Docs API处理页眉页脚的需求,给你梳理下可行的方案:

问题1:添加页眉和页脚

Google Docs API的documents.batchUpdate其实支持专门的创建页眉/页脚请求,只是可能你没注意到CreateHeaderRequestCreateFooterRequest这两个类型。核心思路是先创建页眉/页脚容器,再往里面插入内容。

举个创建默认页眉并添加文本的JSON请求示例:

{
  "requests": [
    // 创建默认页眉(对应所有非首页、非奇偶特殊页)
    {
      "createHeader": {
        "type": "DEFAULT",
        "sectionBreakLocation": {
          "index": 0
        }
      }
    },
    // 往默认页眉插入文本
    {
      "insertText": {
        "location": {
          "segmentId": "header-default", // 对应刚创建的默认页眉ID
          "index": 0
        },
        "text": "这是我的全局默认页眉"
      }
    },
    // 创建默认页脚同理
    {
      "createFooter": {
        "type": "DEFAULT",
        "sectionBreakLocation": {
          "index": 0
        }
      }
    },
    {
      "insertText": {
        "location": {
          "segmentId": "footer-default",
          "index": 0
        },
        "text": "© 2024 我的文档版权"
      }
    }
  ]
}

这里的type参数可选值有DEFAULTFIRST_PAGEODDEVEN,对应不同场景的页眉/页脚类型;sectionBreakLocation指定在哪个节创建,默认index:0就是文档的第一节。

问题2:设置首页专属页眉/页脚

要实现首页不同的页眉页脚,需要两步:创建首页专属的页眉/页脚容器,然后修改文档节的样式开启“首页不同”的设置。

示例请求如下:

{
  "requests": [
    // 创建首页专属页眉
    {
      "createHeader": {
        "type": "FIRST_PAGE",
        "sectionBreakLocation": {
          "index": 0
        }
      }
    },
    // 给首页页眉插入内容
    {
      "insertText": {
        "location": {
          "segmentId": "header-first-page",
          "index": 0
        },
        "text": "这是文档首页专属页眉"
      }
    },
    // 开启第一节的"首页不同页眉页脚"设置
    {
      "updateSectionStyle": {
        "sectionStyle": {
          "differentFirstPageHeaderFooter": true
        },
        "range": {
          "startIndex": 0,
          "endIndex": 0 // 指向第一节的起始位置
        },
        "fields": "differentFirstPageHeaderFooter"
      }
    }
  ]
}

完成后,文档首页会使用你创建的FIRST_PAGE类型页眉,其他页面使用DEFAULT类型页眉。

更简单的替代方案:Google Apps Script

如果觉得直接写REST API请求太繁琐,Google Apps Script提供了更封装化的方法,代码更易读易维护:

function setupHeaderFooter() {
  const docId = "你的文档ID";
  const doc = DocumentApp.openById(docId);
  
  // 添加全局默认页眉
  const defaultHeader = doc.addHeader();
  defaultHeader.appendParagraph("全局默认页眉");
  
  // 开启首页不同页眉设置
  doc.setDifferentFirstPageHeaderFooter(true);
  // 获取并设置首页页眉
  const firstPageHeader = doc.getHeader(DocumentApp.HeaderSection.FIRST_PAGE);
  firstPageHeader.appendParagraph("首页专属页眉");
  
  // 设置页脚同理
  const defaultFooter = doc.addFooter();
  defaultFooter.appendParagraph("全局默认页脚");
}

其他备选方案(如果API满足不了)

如果一定要用MS Word相关工具,可以先把Google Docs导出为DOCX格式,然后用Office JavaScript API或者VBA脚本处理页眉页脚,完成后再上传回Google Drive并转换为Docs格式。不过这个流程比较绕,除非你本身就有Word自动化的需求,否则还是推荐用Google生态内的方案。

内容的提问来源于stack exchange,提问作者Slick Slime

火山引擎 最新活动