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

表单提交时表格接收[object Object]而非邮箱值的问题排查

问题原因与修复方案

你遇到的[object Object]问题,根源在于获取邮箱的代码写法错误,具体看这部分:

email = itemResponse.getResponse(i).getValue;

错误点拆解

  • getResponse()不需要传i参数:itemResponses[i]已经是当前循环到的单个问题响应对象,直接调用getResponse()就能拿到用户输入的邮箱字符串,加i反而会触发错误。
  • .getValue是多余且错误的写法:getResponse()已经直接返回短答案的文本值,不需要额外调用getValue;而且你漏写了方法调用的括号(),这直接让email变量拿到了一个函数对象,写入表格时就会显示[object Object]。

修复后的完整代码

只需要修正获取邮箱的代码段,其余部分可保留:

function onSubmitForm(e) {
  var formResponse = e.response;
  var itemResponses = formResponse.getItemResponses();
  var email = "";

  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();

    if (question === 'Digite seu e-mail') {
      // 修复后的邮箱获取逻辑
      email = itemResponse.getResponse();
      break;
    }
  }

  myFunction(email);
}

function myFunction(email) {
  if (!email || email.length === 0) {
    console.error('Erro: E-mail não fornecido.');
    return;
  }

  var ss = SpreadsheetApp.openByUrl('Spreadsheet link removed due to security concerns');
  var sheet = ss.getSheetByName('Página1');

  var values = sheet.getRange('A:A').getValues();
  var emailExiste = false;
  var linhaEmail;

  for (var i = 0; i < values.length; i++) {
    if (values[i][0] === email) {
      emailExiste = true;
      linhaEmail = i + 1;
      break;
    }
  }

  if (emailExiste) {
    var horasExistentes = parseFloat(sheet.getRange(linhaEmail, 2).getValue());
    var horas = horasExistentes + 1.5;
    sheet.getRange(linhaEmail, 2).setValue(horas);
  } else {
    var ultimaLinha = sheet.getLastRow() + 1;
    sheet.getRange(ultimaLinha, 1).setValue(email);
    sheet.getRange(ultimaLinha, 2).setValue(1.5);
  }
}

额外优化建议

  1. 用findIndex简化邮箱查找逻辑,替代传统for循环:
// 替换原邮箱查找的for循环
var lastRow = sheet.getLastRow();
var values = sheet.getRange(1, 1, lastRow, 1).getValues();
var emailRowIndex = values.findIndex(row => row[0] === email);
var emailExiste = emailRowIndex !== -1;
var linhaEmail = emailRowIndex + 1;
  1. 避免遍历整个A列的空行,只读取有内容的单元格范围:
var lastRow = sheet.getLastRow();
var values = sheet.getRange(1, 1, lastRow, 1).getValues();

内容的提问来源于stack exchange,提问作者Henrique Corrêa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:54:56