我正在努力应对异常或非正常...
我正在做一个Google电子表格,它将有很多工作表,它们的名称是MM / YYYY日期,例如,我需要从A1:B100范围中获取所有数据,并在主工作表上进行QUERY工作有了这些数据,问题是,我已经用javascript完成了获取该工作表范围的功能,但是我无法在= QUERY()函数上使用它们,尝试了很多,但都采用了与互联网不同的方法,但是没有成功然而..
我的示例电子表格:
https://docs.google.com/spreadsheets/d/1W5W7y16yvOUoqNZCZ59ol8D2nbelJHNqtgaxrtb1jC8/edit?usp=sharing
我也做了应用脚本来动态管理工作表数据:
let sheetsData = () => SpreadsheetApp.getActiveSpreadsheet().getSheets().filter(sheet => sheet.getName().match(/^[\d]/)).map(sheet => sheet.getRange("A1:B20"));
Logger.log( sheetsData() );
我在电子表格上的示例用法是= QUERY(sheetsData();“ SELECT *”),我什至无法列出数据...
任何帮助将是最欢迎的,tnx。
Range
您需要返回范围内包含的值,而不是返回对象。您还必须确保您返回的数据被构造为二维数组。
function GET_DATA() {
const dataSheets = SpreadsheetApp.getActiveSpreadsheet()
.getSheets()
.filter(s => s.getName().match(/^[\d]/));
const ranges = dataSheets
.map(s => s.getRange("A1:B20"));
return ranges
.reduce((result, range) => result.concat(range.getValues()), []);
}
上面的实现使用诸如的公式=QUERY(GET_DATA(), "SELECT *")
。
但是,这种方法存在一个基本问题。由于范围位置是在Apps脚本侧进行硬编码的,并且未指定为公式的一部分,因此,当工作表中的数据发生更改时,不会触发重新计算。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句