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

Google Sheets Script搜索脚本报错:Cannot convert ('selected lines') to int求助

Google Sheets 自定义搜索脚本问题解决

核心错误原因

  1. showRows()方法不支持直接传入行号数组,仅接受单个行号或「起始行号+行数」的参数组合,这是触发"Cannot convert ('selected lines') to int"报错的直接原因。
  2. 函数外部存在多余的feuille.showRows(filteredRows);代码,feuille是函数内部定义的变量,外部无法访问,会引发额外的未定义错误。
  3. 无匹配结果时未恢复显示所有行,导致工作表可能一直处于隐藏状态。

修正后的完整代码

function search() {
    var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var valeurRecherchee = Browser.inputBox("Recherche personnalisée", "Entrez la valeur à rechercher :", Browser.Buttons.OK_CANCEL);
  
    if (valeurRecherchee === "cancel") {
      return;
    }
    var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DATA');
    var queryResult = dataSheet.getRange('A1:M100').createTextFinder(valeurRecherchee).matchEntireCell(true).findAll();
    var filteredRows = queryResult.map(function (cell) {
      return cell.getRow();
    });
    
    // 去重:避免同一行因多单元格匹配被重复处理
    filteredRows = [...new Set(filteredRows)];
    
    if (filteredRows.length === 0) {
      Browser.msgBox("Aucun résultat trouvé pour la recherche : " + valeurRecherchee);
      // 无结果时恢复显示所有行
      feuille.showRows(2, 99);
      return;
    }
    
    // 隐藏所有目标行范围
    feuille.hideRows(2, 99);
    
    // 逐个显示匹配的行
    filteredRows.forEach(function(rowNum) {
      feuille.showRows(rowNum);
    });
}

关键修改说明

  • 删除函数外部的无效代码,消除变量未定义错误。
  • 将批量调用showRows改为循环遍历行号数组,逐个调用showRows(rowNum),适配API参数要求。
  • 添加行号去重逻辑,避免同一行被重复操作。
  • 新增无结果时的行恢复显示逻辑,优化用户体验。
  • 移除不必要的activate()调用,Google Apps Script操作范围无需预先激活。

额外优化建议

  • 推荐使用SpreadsheetApp.getUi()替代旧版BrowserAPI,交互更稳定:
    var ui = SpreadsheetApp.getUi();
    var response = ui.prompt("Recherche personnalisée", "Entrez la valeur à rechercher :", ui.ButtonSet.OK_CANCEL);
    if (response.getSelectedButton() === ui.Button.CANCEL) return;
    var valeurRecherchee = response.getResponseText();
    
  • 若活动工作表与DATA工作表不是同一个,需确认行号对应关系是否匹配,避免显示错误行。
  • 可以将行范围(如2:100)定义为变量,方便后续调整:
    const START_ROW = 2;
    const END_ROW = 100;
    feuille.hideRows(START_ROW, END_ROW - START_ROW + 1);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:43:16