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

如何在Google Apps Script中实现多参数筛选API

实现多参数组合筛选的Google Sheets API

你的现有代码通过else if分支判断,只会匹配第一个非空参数,无法实现多参数同时过滤的需求。要解决这个问题,我们可以先收集所有有效的查询条件,再对数据进行多条件同时校验的过滤。

修改后的完整代码

function doGet(req) {
    // 获取所有查询参数
    const params = req.parameter;
    const doc = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = doc.getSheetByName('chat_animeit');
    const values = sheet.getDataRange().getValues();

    // 构建原始数据数组
    let output = [];
    for(let i = 1; i < values.length; i++) {
        const row = {};
        row['ID'] = values[i][0];
        row['UID'] = values[i][1];
        row['Nome'] = values[i][2];
        row['Perfil'] = values[i][3];
        row['Mensagem'] = values[i][4];
        output.push(row);
    }

    // 建立参数与数据字段的映射关系
    const paramFieldMap = {
        id: 'ID',
        nome: 'Nome',
        uid: 'UID',
        msg: 'Mensagem'
    };

    // 收集所有非空的查询条件
    const filters = [];
    for(const [paramKey, fieldName] of Object.entries(paramFieldMap)) {
        const paramValue = params[paramKey];
        if(paramValue != null) {
            // 为每个非空参数生成对应的过滤函数
            filters.push(obj => {
                const fieldValue = obj[fieldName].toString().toLowerCase();
                return fieldValue.includes(paramValue.toString().toLowerCase());
            });
        }
    }

    // 应用所有过滤条件(多条件同时满足)
    if(filters.length > 0) {
        output = output.filter(row => filters.every(filter => filter(row)));
    }

    // 返回JSON结果
    return ContentService.createTextOutput(JSON.stringify({"results": output}))
        .setMimeType(ContentService.MimeType.JSON);
}

关键修改说明

  1. 参数映射与条件收集:

    • 用paramFieldMap统一管理URL参数和数据字段的对应关系,后续新增参数只需在这里添加映射,无需修改过滤逻辑。
    • 遍历所有参数,将非空的参数转换为对应的过滤函数,存入filters数组。
  2. 多条件过滤逻辑:

    • 使用Array.every()方法,确保只有满足所有过滤条件的行才会被保留,实现多参数的“与”逻辑(比如?id=2&msg=coisas会同时校验ID包含2且Mensagem包含coisas)。
  3. 代码简化:

    • 去掉了原代码中重复的分支判断,统一处理所有参数,代码更易维护。

内容的提问来源于stack exchange,提问作者Ninguém Joga 2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:01:01