如何通过Google Apps Script下载Google Slides中的当前幻灯片为PDF文件?
好问题!Google Slides的Apps Script确实没有直接导出单个Page实例为PDF的API,但我们可以用一个变通方法:创建临时演示文稿,把目标幻灯片复制过去,再导出这个临时文件为PDF,最后清理掉临时文稿。下面是具体实现步骤和代码:
解决方案:通过临时演示文稿导出单页PDF
核心思路
由于SlidesApp没有直接导出单页的方法,我们可以绕个弯实现需求:
- 获取当前选中的目标幻灯片
- 创建一个空白的临时演示文稿
- 将目标幻灯片复制到临时文稿中(先删掉默认的空白页)
- 导出临时文稿为PDF文件
- 自动清理临时文稿(避免占用空间)
- 触发浏览器下载生成的PDF
完整代码实现
// 你已有的获取当前页面函数 export const getCurrentPage = () => { return SlidesApp.getActivePresentation() .getSelection() .getCurrentPage(); }; // 新增的单页导出为PDF并下载的函数 export const exportCurrentPageAsPdf = () => { const currentPage = getCurrentPage(); if (!currentPage) { SlidesApp.getUi().alert("请先选中一张幻灯片再操作!"); return; } // 1. 创建临时演示文稿 const tempPresentation = SlidesApp.create("临时单页导出文稿"); const defaultSlide = tempPresentation.getSlides()[0]; // 删除默认的空白幻灯片,确保临时文稿只有我们要的页面 tempPresentation.deleteSlide(defaultSlide); // 2. 把当前选中的幻灯片复制到临时文稿 currentPage.copyTo(tempPresentation); // 3. 构造PDF导出链接 const tempFileId = tempPresentation.getId(); // 利用Google Docs的导出接口生成PDF链接 const pdfDownloadUrl = `https://docs.google.com/presentation/d/${tempFileId}/export/pdf?format=pdf`; // 4. 触发浏览器下载(通过弹窗脚本实现) const downloadHtml = HtmlService.createHtmlOutput(` <script> // 打开PDF链接触发下载 window.open("${pdfDownloadUrl}", "_blank"); // 1秒后自动关闭弹窗 setTimeout(() => google.script.host.close(), 1000); </script> `).setWidth(120).setHeight(80); SlidesApp.getUi().showModalDialog(downloadHtml, "正在生成PDF..."); // 5. 延迟清理临时文件(给下载留足够时间) Utilities.sleep(5000); // 等待5秒 DriveApp.getFileById(tempFileId).setTrashed(true); // 移到回收站,也可以用deleteFile直接删除 };
关键细节说明
- 临时文稿处理:必须先删除默认空白页,否则导出的PDF会多一张空页
- PDF导出链接:这是Google官方的文档导出接口,安全且稳定,不需要额外授权
- 下载触发:Apps Script无法直接调用浏览器下载,所以用一个极小的弹窗来执行JavaScript下载逻辑
- 临时文件清理:设置5秒延迟是为了确保下载请求已经发出,避免文件提前被删除导致下载失败
使用方法
- 打开Google Slides的脚本编辑器(工具 > 脚本编辑器)
- 粘贴上述代码
- 第一次运行时需要授权脚本访问你的Google Drive和Slides
- 选中要导出的幻灯片,运行
exportCurrentPageAsPdf函数即可自动下载PDF
内容的提问来源于stack exchange,提问作者Cagri Uysal
相关产品推荐
相关产品推荐

