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

如何在Google Sheets中用If/Else语句跳过重复行,在HTML UI表格展示唯一值

嘿,我明白你的问题了——你现在的脚本会把所有采购订单号都显示出来,包括重复的,但你只想展示唯一的编号对吧?别担心,我来帮你搞定这个!

核心思路

问题出在你没有对获取到的订单号做去重处理。与其用容易出错的if/else逐个判断,不如利用JavaScript的Set对象来快速去重,它天生就会自动过滤重复值,代码还更简洁。

步骤1:修改后端Apps Script代码

首先更新你的脚本,先从工作表获取数据,然后去重,再把处理好的唯一值传给HTML界面:

// 获取所有唯一的采购订单号
function getUniquePurchaseOrders() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const poSheet = spreadsheet.getSheetByName('POHistory');
  
  // 获取A列数据(假设A1是表头,从A2开始是订单号)
  const allPOs = poSheet.getRange('A2:A').getValues().flat();
  
  // 去重+过滤空单元格:先用filter去掉空值,再用Set去重,最后转成数组
  const uniquePOs = [...new Set(allPOs.filter(po => po !== ''))];
  
  return uniquePOs;
}

// 显示HTML UI
function showPOUi() {
  const htmlTemplate = HtmlService.createTemplateFromFile('你的HTML文件名');
  // 把唯一订单号数组传给模板
  htmlTemplate.uniquePOs = getUniquePurchaseOrders();
  
  // 弹出对话框
  SpreadsheetApp.getUi().showModalDialog(
    htmlTemplate.evaluate().setWidth(400).setHeight(300),
    '唯一采购订单编号'
  );
}

步骤2:调整HTML界面渲染

接下来修改你的HTML文件,遍历去重后的数组来生成表格:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <style>
      table {border-collapse: collapse; width: 100%; margin: 10px 0;}
      th, td {border: 1px solid #ccc; padding: 8px; text-align: left;}
      th {background-color: #f5f5f5;}
    </style>
  </head>
  <body>
    <h3>唯一采购订单</h3>
    <table>
      <tr>
        <th>订单编号</th>
      </tr>
      <!-- 遍历唯一订单号数组生成行 -->
      <? for (let po of uniquePOs) { ?>
      <tr>
        <td><?= po ?></td>
      </tr>
      <? } ?>
    </table>
    <button onclick="google.script.host.close()">关闭</button>
  </body>
</html>

为什么你的if/else没生效?

大概率是你的判断逻辑有漏洞:比如你可能在遍历的时候没有正确跟踪已经显示过的订单号,或者判断条件写得不对(比如没考虑空值)。而用Set的方式更可靠,它会自动帮你处理所有重复值,代码也少很多,不容易出错。

如果你的订单号有大小写差异(比如PO123和po123算同一个),还可以在去重的时候统一转成大写/小写:

const uniquePOs = [...new Set(allPOs.filter(po => po !== '').map(po => po.toUpperCase()))];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:08:51