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

如何编写Google Sheets脚本在SP单元格值达到目标值时触发邮件通知

Google Sheets SP值达标自动邮件通知实现方案

1. 保留原有ASX价格获取自定义函数

你当前使用的价格计算函数无需修改,保留即可:

function ASXLASTPRICE(asx_stock) {
  var tickervar = asx_stock.substring(asx_stock.indexOf(":") + 1);
  var url = "https://www.asx.com.au/asx/1/share/" + tickervar;
  var response = UrlFetchApp.fetch(url);
  var content = response.getContentText();
  Logger.log(content);
  var json = JSON.parse(content);
  var last_price = json["last_price"];
  return last_price;
}

2. 新增表格辅助列

在现有表格最后加2列辅助字段,避免重复发送通知:

  • 目标SP值列:填写每个标的对应的触发阈值,也可以统一设置固定值
  • 通知状态列:用来标记该标的是否已经触发过通知,无需手动填写

3. 新增监测+邮件通知脚本

在Apps Script编辑器中新增以下代码,按注释修改配置项:

// 请根据你的表格实际情况修改以下配置参数,A列对应序号1
const CONFIG = {
  SP_COLUMN: 19, // SP值所在列的序号,按实际调整
  TARGET_SP_COLUMN: 20, // 目标SP值所在列的序号,按实际调整
  NOTIFY_STATUS_COLUMN: 21, // 通知状态列的序号,按实际调整
  HEADER_ROW_COUNT: 1, // 表头行数,检测时会自动跳过表头
  RECIEVE_EMAIL: "你的收件邮箱@xxx.com", // 替换为实际收信邮箱
  SHEET_NAME: "Sheet1" // 替换为你要监测的工作表名称
}

function checkSPAndSendNotify() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CONFIG.SHEET_NAME);
  const allRowData = sheet.getDataRange().getValues();
  // 遍历所有数据行,跳过表头
  for (let rowIndex = CONFIG.HEADER_ROW_COUNT; rowIndex < allRowData.length; rowIndex++) {
    const currentRow = allRowData[rowIndex];
    const currentSP = currentRow[CONFIG.SP_COLUMN - 1]; // 数组下标从0开始,所以列号要减1
    const targetSP = currentRow[CONFIG.TARGET_SP_COLUMN - 1];
    const notifyStatus = currentRow[CONFIG.NOTIFY_STATUS_COLUMN - 1];
    // 校验:当前SP、目标值均有效,SP达到目标,且未发送过通知
    if (currentSP && targetSP && currentSP >= targetSP && !notifyStatus) {
      // 发送通知邮件
      MailApp.sendEmail({
        to: CONFIG.RECIEVE_EMAIL,
        subject: `SP值达标提醒:当前SP${currentSP}已达到目标值${targetSP}`,
        body: `你设置的SP阈值提醒已触发:
标的名称/代码:${currentRow[0]}
当前SP值:${currentSP}
预设目标SP值:${targetSP}
请登录Google Sheets查看最新数据。`
      })
      // 标记已通知,避免重复触发
      sheet.getRange(rowIndex + 1, CONFIG.NOTIFY_STATUS_COLUMN).setValue("已通知");
    }
  }
}

如果你不需要分标的设置不同阈值,直接把判断条件里的targetSP替换为固定数值即可

4. 配置自动触发器

实现定时自动检测不需要手动运行脚本:

  • 打开Apps Script编辑器左侧的「触发器」菜单
  • 点击右下角「添加触发器」
  • 选择要运行的函数:checkSPAndSendNotify
  • 选择事件源:「时间驱动」
  • 选择触发器类型:「分钟计时器」,间隔建议设置为15分钟(可根据需求调整,不要设置过短避免触发ASX接口限流)
  • 保存触发器,首次运行时按提示完成Google账号授权即可

数据样例参考

数据样例

注意事项

  • Google个人账号的Apps Script每日邮件发送配额为100封,企业账号配额更高,可根据用量调整检测频率
  • 如果遇到ASXLASTPRICE函数刷新不及时的情况,可以在checkSPAndSendNotify函数第一行添加sheet.getDataRange().setFormulas(sheet.getDataRange().getFormulas())强制触发所有公式重算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:24:02