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

基于Google Forms回复在Discord中@指定角色的App Script问题

问题修复方案

问题1:重复发送Discord Embed

你大概率是把Discord消息发送代码放在了遍历表单回答字段的循环里,导致每处理一个字段就发一次消息,每次还追加内容。解决办法是:先在循环里把所有回答内容组装到Embed描述中,循环结束后再一次性发送消息。

问题2:始终@最后一个角色ID

这是因为if-else分支的逻辑有问题——要么变量在循环外被反复覆盖,要么没使用链式判断导致后续条件覆盖了之前的赋值。要确保匹配到对应游戏/团队时,立刻确定目标角色ID,且后续分支不会覆盖这个值。


修复后的完整代码示例

function onFormSubmit(e) {
  // 获取表单提交的回答数据
  const responses = e.response.getItemResponses();
  let embedContent = "";
  let targetRoleId = "";
  const discordWebhook = "你的Discord Webhook地址"; // 替换成实际Webhook URL

  // 遍历所有回答,组装Embed的描述内容
  responses.forEach(item => {
    const question = item.getItem().getTitle();
    const answer = item.getResponse();
    embedContent += `**${question}**: ${answer}\n\n`;
  });

  // 根据申请的游戏/团队匹配对应负责人角色ID
  // 假设表单中有一个名为「申请的游戏/团队」的问题
  const selectedTeam = responses.find(res => res.getItem().getTitle() === "申请的游戏/团队").getResponse();
  
  if (selectedTeam === "游戏A") {
    targetRoleId = "角色ID1";
  } else if (selectedTeam === "游戏B") {
    targetRoleId = "角色ID2";
  } else if (selectedTeam === "团队C") {
    targetRoleId = "角色ID3";
  } else {
    targetRoleId = "默认通知角色ID"; // 未匹配到的 fallback
  }

  // 构建Discord Embed消息体
  const payload = {
    content: `<@&${targetRoleId}>`, // 正确@目标角色
    embeds: [
      {
        title: "新招募申请通知",
        description: embedContent,
        color: 3066993, // 可选:自定义Embed颜色
        timestamp: new Date().toISOString()
      }
    ]
  };

  // 仅发送一次Discord消息
  const requestOptions = {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  };
  UrlFetchApp.fetch(discordWebhook, requestOptions);
}

关键修复点说明

  • 解决重复发送Embed:将UrlFetchApp.fetch()调用移至遍历回答的循环之外,确保所有内容组装完成后只发送一次消息。
  • 解决角色@错误:
    1. 单独提取「申请的游戏/团队」的回答,避免在循环中反复判断导致变量被覆盖。
    2. 使用else if链式判断,确保只有第一个匹配的条件会赋值角色ID,不会被后续分支覆盖。
    3. 拆分内容组装和角色匹配逻辑,避免两者互相干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:40:33