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

Google App Script导出单张幻灯片为PDF报错,求正确实现方案

Google幻灯片单张导出PDF并邮件发送问题

问题背景

  • 关联Google表单的Google表格,表单提交时脚本会将数据填入Google幻灯片固定位置的文本框
  • 两个不同表单对应同一演示文稿内的两张不同幻灯片
  • 需要将修改后的单张目标幻灯片导出为PDF,发送到表单提供的邮箱地址

报错情况

修改原表格导出PDF的代码(替换表格ID为演示文稿ID、工作表ID为幻灯片ID)后,出现404错误:

Exception: Request failed for https://docs.google.com returned code 404. Truncated server response: <meta name="viewport" c... (use muteHttpExceptions option to examine full response)

错误触发于代码第13行:var contents = result.getContent();

若将两个ID都设为演示文稿ID,程序可运行但会导出包含全部幻灯片的PDF,不符合需求。

当前使用代码

function Email3UpPDF () {
  Logger.log("Emailing!");
  var Sapp = SpreadsheetApp;
  var FS = Sapp.getActiveSpreadsheet().getSheetByName("3UP Submissions");
  var ssID = "10Up_PcLxVopXont9Qcu-yk-PrFGWfWPQ3ETsgys4v0Y"
  var shID = "g2580bcdba17_0_22"
  
  var Addy1 = FS.getRange("N"+FS.getLastRow()).getValue();
  
  var requestData = {"method": "GET", "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}}; 
  var url = "https://docs.google.com/presentation/d/"+ ssID + "/export?format=pdf&id="+shID; //This creates the PDF export url
  var result = UrlFetchApp.fetch(url , requestData);  
  var contents = result.getContent();
  
  MailApp.sendEmail(Addy1,"Local Sign Template" ,"Here is your custom sign Template.", {attachments:[{fileName: "LST3UP.pdf", content:contents, mimeType:"application/pdf"}]});

}

解决方案

Google幻灯片导出单张幻灯片的URL参数与表格不同,核心错误是误用了表格导出的id参数,幻灯片需用slideIds指定目标幻灯片ID。

修正后的完整代码

function Email3UpPDF () {
  Logger.log("Emailing!");
  var Sapp = SpreadsheetApp;
  var FS = Sapp.getActiveSpreadsheet().getSheetByName("3UP Submissions");
  var presentationId = "10Up_PcLxVopXont9Qcu-yk-PrFGWfWPQ3ETsgys4v0Y";
  var targetSlideId = "g2580bcdba17_0_22";
  
  var recipientEmail = FS.getRange("N"+FS.getLastRow()).getValue();
  
  var requestHeaders = {"Authorization":"Bearer "+ScriptApp.getOAuthToken()};
  // 关键修正:使用slideIds参数指定单张幻灯片
  var exportUrl = `https://docs.google.com/presentation/d/${presentationId}/export?format=pdf&slideIds=${targetSlideId}`;
  
  try {
    var response = UrlFetchApp.fetch(exportUrl, {method: "GET", headers: requestHeaders, muteHttpExceptions: true});
    if (response.getResponseCode() !== 200) {
      Logger.log("导出失败,响应内容:" + response.getContentText());
      return;
    }
    var pdfContent = response.getContent();
    
    MailApp.sendEmail(recipientEmail, "Local Sign Template", "Here is your custom sign Template.", {
      attachments: [{
        fileName: "LST3UP.pdf", 
        content: pdfContent, 
        mimeType: "application/pdf"
      }]
    });
  } catch (e) {
    Logger.log("发送邮件出错:" + e.toString());
  }
}

关键修改点

  1. URL参数修正:将原id=替换为slideIds=,这是幻灯片导出单页的正确参数
  2. 错误处理优化:添加muteHttpExceptions: true和响应码检查,便于调试导出失败的原因
  3. 变量名优化:将ssID/shID改为更清晰的presentationId/targetSlideId,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:11:58