You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Apps Script实现Google表单图片导入幻灯片后导出PNG

解决方案:表单提交自动生成幻灯片并导出为PNG

问题说明

需要实现:基于模板创建幻灯片,将Google表单提交的图片设为背景,同时保留模板中的叠加层图片;完成幻灯片创建后自动导出为PNG文件,但无法将生成幻灯片的代码与导出代码结合,核心问题是无法让导出代码获取刚创建的幻灯片ID。

修改后的完整代码

// 替换为你的目标文件夹ID
var folderId = "xxxxxxxxxxxxxxxxxxxx";

function onFormSubmit(e) {
  // 打开模板幻灯片
  var templateDoc = DriveApp.getFileById('1bGKJ027bnUCgSpQrunXXBZCgFNXZHtF2ZnsaWHLh8B4');
  // 复制模板生成新幻灯片文件
  var newTempFile = templateDoc.makeCopy();
  var newPresentationId = newTempFile.getId();
  
  // 打开新幻灯片进行编辑
  var openSlide = SlidesApp.openById(newPresentationId);
  var items = e.response.getItemResponses();
  
  // 将表单提交的图片替换模板中的占位符
  var imageId = items[0].getResponse();
  openSlide.getSlides().forEach(slide => {
    slide.getShapes().forEach(shape => {
      if (shape.getText().asString().trim() == '{{image1}}') {
        const imageFile = DriveApp.getFileById(Array.isArray(imageId) ? imageId[0] : imageId);
        shape.replaceWithImage(imageFile.getBlob());
      }
    });
  });
  
  // 重命名新幻灯片
  var slideName = items[0].getResponse();
  newTempFile.setName(slideName);
  
  // 调用导出函数,传入新幻灯片ID
  convertToPNG(newPresentationId, slideName);
}

function convertToPNG(presentationId, slideName) {
  // 导出第一张幻灯片为PNG(slideId为'p'代表第一张)
  var slideId = 'p';
  var url = `https://docs.google.com/presentation/d/${presentationId}/export/png?id=${presentationId}&pageid=${slideId}`;
  var options = {
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
    }
  };
  
  var response = UrlFetchApp.fetch(url, options);
  var imageBlob = response.getAs(MimeType.PNG);
  // 用幻灯片名称命名PNG文件,避免随机名称
  imageBlob.setName(`${slideName}.png`);
  
  // 保存到指定文件夹并输出URL
  var imgUrl = DriveApp.getFolderById(folderId).createFile(imageBlob).getUrl();
  Logger.log(imgUrl);
}

关键改动说明

  • 将导出函数改为带参数形式:convertToPNG现在接收presentationId(新创建的幻灯片ID)和slideName(用于命名PNG),解决了无法传递ID的核心问题。
  • 在表单提交函数中直接调用导出:创建完新幻灯片并完成编辑后,立即调用convertToPNG,传入刚生成的newPresentationId,无需手动填写ID。
  • 优化文件名:用幻灯片的名称作为PNG文件名,替代随机数,更便于识别。
  • 简化代码逻辑:整理了变量命名,让代码更易读,同时确保SlidesApp的编辑操作完成后再执行导出。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:06:41