Google Sheets批量插入对应分组参数的IMPORTRANGE公式方案问询
最优实现方案
直接通过数组批量生成公式后一次性写入区域即可,全程仅2次接口调用,性能远高于逐行循环:
// 读取分组列所有值,返回二维数组结构为 [[GROUP1], [GROUP1], ..., [GROUP2]] const placeholderValues = this.sheet.getRange(2, this.groupColumn, this.lastRow - 1, 1).getValues(); // 按行生成对应公式的二维数组,结构和返回值完全匹配 const formulaArr = placeholderValues.map(row => { const currentGroup = row[0]; return [`=VLOOKUP($A2,IMPORTRANGE("${currentGroup}","Sheet!A:B"),2,0)`]; }); // 一次性写入整个公式区域 formulaRange.setFormulas(formulaArr);
原写法异常原因
getValue()/getDisplayValue()仅会读取选区左上角第一个单元格的内容,所以所有行都只会取到GROUP1- 直接调用
setFormula()时,传入的单个公式会被统一应用到整个选区,即使拿到完整分组值数组也无法直接匹配 setFormulas()要求传入和目标选区行列数完全匹配的二维数组,刚好和getValues()的返回结构对应,全程仅和Sheets服务交互两次,数据量越大相比逐行循环的性能优势越明显
内容的提问来源于stack exchange,提问作者strumpy_strudel
相关产品推荐
相关产品推荐

