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

Google Form AppsScript:未上传文件时的空值报错与邮件内容替换问题

解决Google Apps Script处理表单文件上传空值报错问题

问题根源

  1. 原代码直接通过allQuestions[2]索引获取文件上传问题的响应,但可选问题未回答时不会生成对应的ItemResponse,导致Question2为undefined,后续调用Question2.getItem()触发TypeError: Cannot read properties of undefined (reading 'length')。
  2. 未针对空值场景设置对应的文本提示和HTML显示内容。

修改后的代码

function EmailForm() {
  // 获取表单实例与所有响应
  const form = FormApp.getActiveForm();
  const responses = form.getResponses();
  
  // 无响应时直接退出,避免后续报错
  if (responses.length === 0) return;
  
  // 取最新的一条响应
  const latestResponse = responses.pop();
  const allItemResponses = latestResponse.getItemResponses();

  // 处理问题1(必填文本字段,索引为0)
  let question1Answer = "";
  const question1Resp = allItemResponses.find(resp => resp.getItem().getIndex() === 0);
  if (question1Resp) {
    question1Answer = question1Resp.getResponse().toString();
    Logger.log("问题1答案:" + question1Answer);
  }

  // 处理问题2(可选文件上传字段,索引为2)
  let question2Text = "未上传文件";
  let question2Html = "<em>No answer</em>";
  const question2Resp = allItemResponses.find(resp => resp.getItem().getIndex() === 2);
  
  if (question2Resp) {
    const fileIds = question2Resp.getResponse(); // 文件上传返回的是ID数组
    if (fileIds.length > 0) {
      // 生成每个文件的Drive可访问链接
      const fileLinks = fileIds.map((id, index) => 
        `<a href="https://drive.google.com/file/d/${id}" target="_blank">文件${index + 1}</a>`
      ).join("<br>");
      question2Text = `已上传${fileIds.length}个文件`;
      question2Html = fileLinks;
    }
  }

  // 满足条件时发送邮件
  if (question1Answer === 'Yes') {
    const htmlMsg = `
      <p>问题1答案:${question1Answer}</p>
      <p>问题2状态:${question2Html}</p>
    `;
    GmailApp.sendEmail('abc@gmail.com', "Incident Reported", "", { htmlBody: htmlMsg });
  }
}

关键修改说明

  • 安全获取响应:用find()根据问题索引查找对应响应,替代直接索引取值,避免未回答场景下的undefined报错。
  • 空值默认处理:提前设置未上传时的文本和HTML内容,确保无论是否上传文件都有合法内容输出。
  • 多文件兼容:文件上传的getResponse()返回ID数组,通过map()批量生成链接,支持多文件上传场景。
  • 边界防护:增加无响应时的退出逻辑,避免无数据时触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:43:15