如何通过Apps Script为Google Docs添加水印
Apps Script 实现Google Docs插入水印的可行方案
截至当前,Google Apps Script 原生Docs服务尚未提供专门的水印操作接口,但有两种可落地的实现方案,效果可匹配官方UI插入的水印:
方案1:页眉层模拟水印(无需开启高级服务,兼容性最强)
官方水印本质是渲染在所有页面内容底层、跨页固定显示的全局元素,可通过在页眉插入定位到页面中心的半透明元素实现完全一致的视觉效果。
文本水印实现代码
function addTextWatermark() { const doc = DocumentApp.getActiveDocument(); const body = doc.getBody(); // 初始化页眉 const header = body.getHeader() || body.addHeader(); // 插入水印文本段落 const watermarkPara = header.appendParagraph("内部保密"); watermarkPara.setSpacingBefore(0).setSpacingAfter(0) .setMarginTop(0).setMarginBottom(0) .setAlignment(DocumentApp.HorizontalAlignment.CENTER); // 调整文本样式 const text = watermarkPara.editAsText(); text.setFontSize(72) .setForegroundColor("#999999") .setBold(true) .setItalic(true); // 定位到页面中心(A4尺寸适配,可按需调整数值) watermarkPara.setTopOffset(250) .setLeftOffset(100) .setRotation(-45); }
图片水印实现代码
function addImageWatermark(imageBlob) { const doc = DocumentApp.getActiveDocument(); const header = doc.getBody().getHeader() || doc.getBody().addHeader(); // 插入图片,imageBlob可传入Drive文件导出的Blob、或UrlFetchApp拉取的图片Blob const watermarkImg = header.appendImage(imageBlob); // 调整水印参数 watermarkImg.setWidth(400) .setHeight(200) .setTransparency(0.7) // 透明度区间:0(完全不透明)~1(完全透明) .setTop(250) .setLeft(150) .setRotation(-45); }
方案特性:
- 生成的水印跨所有页面显示,位于正文内容底层,视觉效果和官方水印无差异
- 无需额外开启服务,所有环境均可直接运行
- 删除水印只需清空页眉对应元素即可
方案2:调用高级Docs API生成官方原生水印
如果需要生成和官方UI插入的完全兼容、可通过Docs「插入-水印」菜单直接编辑的原生格式水印,可开启Google Docs API高级服务调用原生接口实现。
实现步骤
- 在Apps Script编辑器左侧点击「服务+」,找到「Google Docs API」完成添加
- 运行以下代码:
function addNativeWatermark() { const docId = DocumentApp.getActiveDocument().getId(); const requests = [ { updateWatermark: { watermark: { text: { text: "内部文档", fontFamily: "Arial", fontSize: { magnitude: 72, unit: "PT" }, color: { color: { rgbColor: { red: 0.6, green: 0.6, blue: 0.6 } } }, opacity: 0.3, rotation: -45 } }, fields: "*" } } ]; Docs.Documents.batchUpdate({requests: requests}, docId); }
方案特性:
- 生成的是官方标准格式水印,支持在Docs界面直接编辑、删除,和手动插入的水印完全一致
- 支持图片格式原生水印,只需将请求中的
text字段替换为image字段传入图片资源即可
内容的提问来源于stack exchange,提问作者Victor Ramos
相关产品推荐
相关产品推荐

