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

如何将Google Sheets中符合条件的产品告警合并到单个消息框?

修改方案:合并告警到单个消息框

没问题,我帮你调整代码,把所有符合条件的告警信息合并到一个消息框里。核心思路是先收集所有告警内容,最后一次性弹出,以下是完整的修改方案:

完整修改后的代码

function alarm(findArray) {
  var findArray = findArray || ["YES"]; // 默认查找关键词为"YES"
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('CALENDAR');
  var CALENDARsheet = ss.getSheetByName('CALENDAR');
  
  // 初始化数组,用来收集所有告警消息
  var alertMessages = [];

  var srg = sh.getRange(2, 8, sh.getLastRow() - 1, 1);
  for (var i = 0; i < findArray.length; i++) {
    var f = srg.createTextFinder(String(findArray[i])).matchCase(true).findAll();
    if (f.length > 0) {
      for (var j = 0; j < f.length; j++) {
        var rowNum = f[j].getRow();
        // 获取产品名称和剩余天数,组装告警文本
        var productName = CALENDARsheet.getRange(rowNum, 1).getValue();
        var daysLeft = CALENDARsheet.getRange(rowNum, 7).getValue();
        var message = `${productName} product has ${daysLeft} days to go on sale.`;
        // 将消息存入数组,暂不弹窗
        alertMessages.push(message);
      }
    }
  }

  // 所有消息收集完成后,统一弹出单个消息框
  if (alertMessages.length > 0) {
    var combinedMessage = alertMessages.join('\n');
    Browser.msgBox('ALERT ALERT', combinedMessage, Browser.Buttons.OK);
  }
}

关键改动说明

  • 新增消息收集容器:创建alertMessages数组,把所有符合条件的告警文本先存起来,而不是找到一条就弹一次窗。
  • 替换弹窗逻辑:把原循环内的Browser.msgBox调用改成向数组添加内容,避免多次弹窗的困扰。
  • 统一合并弹窗:遍历结束后,用join('\n')把数组里的所有消息用换行符连接,最后只弹出一个包含所有告警的消息框。
  • 简化行号计算:因为原代码里的删除行逻辑是注释状态,所以去掉了多余的d变量,直接用f[j].getRow()获取行号,让代码更简洁。

这样修改后,所有符合条件的产品告警会整齐地显示在同一个消息框里,每条消息单独占一行,完全符合你想要的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:17:31