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

使用Google Apps Script在Google Sheets中查看云端硬盘PDF报错求助

解决Google Apps Script模态框中Drive PDF无法加载的问题

问题原因

出现「drive.google.com refused to connect.」错误的核心原因有两个:

  1. 跨域框架限制:Google Drive默认禁止直接将文件查看链接嵌入第三方iframe(包括Google Sheets的模态框),浏览器会因X-Frame-Options头限制阻止加载。
  2. 链接格式错误:原代码生成的viewer链接嵌套了Drive文件链接,导致请求逻辑混乱,无法正常解析。

修正方案

通过以下调整解决问题:

  • 使用Google Drive官方支持的预览嵌入链接替代原有的viewer格式
  • 直接通过文件ID生成链接,避免正则匹配的潜在错误
  • 确保iframe配置符合Google的嵌入规范

修正后的完整代码

function viewPDF() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var certificateSheet = ss.getSheetByName("Certificate");
  
  // 定义文件名
  var filename = certificateSheet.getRange("D4").getValue() + "_" + certificateSheet.getRange("B6").getValue() + "_" + certificateSheet.getRange("D6").getValue() + ".pdf";

  // 在「我的云端硬盘」中搜索PDF文件
  var folder = DriveApp.getRootFolder();
  var files = folder.getFilesByName(filename);

  // 如果找到文件,加载第一个匹配项
  if (files.hasNext()) {
    var pdfFile = files.next();
    var fileId = pdfFile.getId();
    
    // 使用Google Drive官方预览嵌入链接
    var embedUrl = "https://drive.google.com/file/d/" + fileId + "/preview";

    // 创建模态框HTML内容,添加必要的属性避免加载限制
    var html = '<iframe src="' + embedUrl + '" width="100%" height="100%" frameborder="0" allow="autoplay; fullscreen"></iframe>';

    // 创建模态对话框
    var htmlOutput = HtmlService.createHtmlOutput(html)
      .setWidth(800)
      .setHeight(600)
      .setSandboxMode(HtmlService.SandboxMode.IFRAME); // 明确设置沙箱模式为IFRAME

    SpreadsheetApp.getUi().showModalDialog(htmlOutput, "PDF Viewer");
  } else {
    // 文件不存在时提示错误
    SpreadsheetApp.getUi().alert("PDF文件未找到。");
  }
}

关键修改点说明

  1. 简化文件ID获取:直接调用pdfFile.getId()获取文件ID,比正则匹配更可靠且不易出错。
  2. 替换为官方嵌入链接:使用/preview后缀的链接,这是Google Drive专门用于iframe嵌入的格式,不会触发跨域限制。
  3. 优化iframe属性:添加frameborder="0"和allow属性,确保预览功能正常启用。
  4. 明确沙箱模式:显式设置SandboxMode.IFRAME,确保HtmlService以支持iframe嵌入的模式运行(当前版本默认已是该模式,但显式声明更稳妥)。

额外注意事项

  • 确保PDF文件的权限设置为仅自己可见或已共享给当前用户,否则会因权限不足无法加载。
  • 如果仍出现加载问题,可尝试清除浏览器缓存或换用无痕模式测试,排除缓存导致的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:33:30