如何修改Google Apps Script实现跨多个Google Sheets工作簿搜索返回匹配行
修改方案
你只需要修改Code.gs文件的search函数即可,Index.html因为表头结构完全匹配不需要调整。
1 替换Code.gs的search函数代码
把原来的search函数替换为以下代码,记得替换注释中标注的两个工作簿ID和对应数据范围:
//SEARCH FOR MATCHED CONTENTS function search(searchtext){ // 配置两个待搜索的工作簿信息 const spreadsheets = [ { id: '1443X5UzzRfpYachZZLFrmYFq821ioioqwFAnASY', // 替换为第一个工作簿ID range: 'TEST!A2:F' // 替换为第一个工作簿的搜索数据范围 }, { id: '替换为第二个工作簿的ID', // 第二个工作簿ID range: '替换为第二个工作簿的搜索数据范围' // 第二个工作簿的搜索范围,列数、列顺序要和第一个完全一致 } ] const ar = []; // 遍历所有工作簿逐个搜索、合并结果 spreadsheets.forEach(sheetConfig => { const data = Sheets.Spreadsheets.Values.get(sheetConfig.id, sheetConfig.range).values; data.forEach(f => { if (~f.indexOf(searchtext)) { ar.push(f); // 【可选】如果需要标注数据来自哪个工作簿,可以把上面一行替换为下面的代码,在最后一列加来源标记 // ar.push([...f, sheetConfig.id === spreadsheets[0].id ? '工作簿1' : '工作簿2']) } }) }) return ar; }
2 注意事项
- 确保你当前部署脚本的Google账号对两个工作簿都有至少查看权限
- 如果脚本运行报错提示找不到Sheets对象,需要在Apps Script编辑器的「服务」里添加「Google Sheets API」服务
- 如果开启了来源标注功能,需要在
Index.html的表头部分新增对应的<th scope='col'>来源</th>
内容的提问来源于stack exchange,提问作者Vanny
相关产品推荐
相关产品推荐

