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

如何用Apps Script实现Spreadsheet满足指定条件时自动发送邮件?

代码问题修复与功能实现

现有代码错误说明

  • getRange("C2:C10").getValues()返回结果为二维数组,直接与数值2比较的逻辑永远不成立,外层if判断始终不触发,后续代码无法执行
  • 年龄校验逻辑放在for循环外部,未逐行判断每行的鱼龄是否达标,一旦触发会无差别给所有管理员发邮件,不符合需求
  • 重复调用getActiveSpreadsheet()、getSheetByName()获取同一表格对象,执行效率低下

修复后可运行代码

function fishalert() {
  // 提前获取工作表对象,减少重复调用开销
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  const subject = '鱼龄超期提醒';
  // 自动获取表格所有有内容的范围,不用手动写死适配表格行数变动
  const allRowData = sheet.getDataRange().getValues();
  // 从第2行开始遍历(跳过表头行,数组下标从0开始所以i初始值为1)
  for (let i = 1; i < allRowData.length; i++) {
    const currentRow = allRowData[i];
    const lineName = currentRow[0]; // A列:品系名称
    const fishAge = Number(currentRow[2]); // C列:鱼龄,做数值转换避免表格格式导致的判断错误
    const adminEmail = currentRow[3]; // D列:管理员邮箱
    // 仅当鱼龄超2年且存在有效邮箱时发信
    if (fishAge > 2 && adminEmail) {
      const message = `品系${lineName}的鱼龄已超过2年,请及时处理`;
      MailApp.sendEmail(adminEmail, subject, message);
    }
  }
}

自动触发配置步骤

  1. 打开对应Google表格,点击菜单栏「扩展程序」→「Apps Script」进入脚本编辑器
  2. 编辑器左侧点击「触发器」(时钟形状图标)
  3. 点击右下角「添加触发器」按钮
  4. 选择运行函数为fishalert,事件源选「时间驱动」,根据你的需求选择触发频率(推荐每日触发一次即可满足日常检测需求)
  5. 保存后按提示完成授权,即可实现自动检测发信

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:24:03