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

如何通过脚本在Google表单提交触发的邮件主题追加用户账号

解决表单提交邮件主题追加账号信息的TypeError问题

问题分析

你遇到的TypeError大概率是因为直接访问第三个问题的响应时未做边界判断,或是修改函数参数时传递逻辑出错。比如表单提交的响应数不足3个时,访问itemResponses[2]会触发数组越界错误;或是修改sendEmail函数后未同步调整参数传递逻辑。

修改方案

以下是调整后的完整代码,核心改动是安全获取账号响应并动态拼接邮件主题:

// Restrict the script's authorization
// to the form it is bound to.
//@OnlyCurrentDoc

// Create a form submit installable trigger
// using Apps Script.
function createFormSubmitTrigger() {
  var form = FormApp.getActiveForm();
  var currentTriggers = ScriptApp.getProjectTriggers();
  if(currentTriggers.length > 0)
    return;
  ScriptApp.newTrigger("onFormSubmit").forForm(form).onFormSubmit().create();
}

// 表单提交触发函数
function onFormSubmit(e) {
  var formResponse = e.response;
  var itemResponses = formResponse.getItemResponses();

  var emailBody = "New Service Input:\n\n";
  itemResponses.forEach(function(itemResponse) {
    var title = itemResponse.getItem().getTitle();
    var response = itemResponse.getResponse();
    emailBody += title + "\n" + response + "\n\n";
  });

  // 安全获取第三个问题(账号)的响应,索引从0开始,第三个对应索引2
  var accountResponse = "";
  if (itemResponses.length > 2) {
    accountResponse = itemResponses[2].getResponse();
  }

  // 传递账号信息到邮件发送函数
  sendEmail(emailBody, accountResponse);
}

// 邮件发送函数,新增账号参数
function sendEmail(emailBody, accountResponse) {
  var subject = "New Service Input";
  // 如果有有效账号信息,追加到主题末尾
  if (accountResponse && accountResponse.trim() !== "") {
    subject += " - 账号: " + accountResponse;
  }
  MailApp.sendEmail("test@email.com", subject, emailBody);
}

关键改动说明

  1. 边界判断:先检查itemResponses长度是否大于2,避免因响应数不足导致的数组越界错误
  2. 参数扩展:给sendEmail新增accountResponse参数,同步在onFormSubmit中传递该值
  3. 空值处理:仅当账号响应不为空时才追加到主题,避免主题出现无效空内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:35:28