Google apps script 使用动态定义的工作表进行Google电子表格查询
我在为一些不寻常的事情挣扎 我正在做一个谷歌电子表格,有很多表格,它们的名字是MM/YYYY,我需要获取A1:B100范围内的所有数据,然后用这些数据在主数据表上进行查询,问题是,我用javascript做了一个函数来获取这些表格的范围,但我不能在=QUERY()上使用它们功能,尝试了很多,用不同的方法从互联网上,但没有成功 我的电子表格示例: 还有我为动态管理工作表数据所做的应用程序脚本:Google apps script 使用动态定义的工作表进行Google电子表格查询,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在为一些不寻常的事情挣扎 我正在做一个谷歌电子表格,有很多表格,它们的名字是MM/YYYY,我需要获取A1:B100范围内的所有数据,然后用这些数据在主数据表上进行查询,问题是,我用javascript做了一个函数来获取这些表格的范围,但我不能在=QUERY()上使用它们功能,尝试了很多,用不同的方法从互联网上,但没有成功 我的电子表格示例: 还有我为动态管理工作表数据所做的应用程序脚本: let sheetsData = () => SpreadsheetApp.getActiveS
let sheetsData = () => SpreadsheetApp.getActiveSpreadsheet().getSheets().filter(sheet => sheet.getName().match(/^[\d]/)).map(sheet => sheet.getRange("A1:B20"));
Logger.log( sheetsData() );
我在电子表格上的示例用法是=QUERY(sheetsData();“SELECT*”),我甚至不能列出数据。。。卢尔
欢迎提供任何帮助,tnx。您不需要返回
范围
对象,而需要返回范围内包含的值。您还必须确保返回的数据是二维数组
函数GET_DATA(){
const dataSheets=SpreadsheetApp.getActiveSpreadsheet()
.getSheets()
.filter(s=>s.getName().match(/^[\d]/);
常数范围=数据表
.map(s=>s.getRange(“A1:B20”);
返回范围
.reduce((result,range)=>result.concat(range.getValues()),[]);
}
上面的实现使用一个公式,例如=QUERY(GET_DATA(),“SELECT*”
然而,这种方法存在一个根本问题。由于范围位置是在应用程序脚本端硬编码的,并且未指定为公式的一部分,因此当工作表中的数据更改时不会触发重新计算。您需要返回范围内包含的值,而不是返回范围对象。您还必须确保返回的数据是二维数组 函数GET_DATA(){ const dataSheets=SpreadsheetApp.getActiveSpreadsheet() .getSheets() .filter(s=>s.getName().match(/^[\d]/); 常数范围=数据表 .map(s=>s.getRange(“A1:B20”); 返回范围 .reduce((result,range)=>result.concat(range.getValues()),[]); } 上面的实现使用一个公式,例如
=QUERY(GET_DATA(),“SELECT*”
然而,这种方法存在一个根本问题。由于范围位置是在应用程序脚本端硬编码的,并且没有指定为公式的一部分,因此当工作表中的数据发生变化时不会触发重新计算。很好,但您是否有其他方法?这将从表的重新计算中受益?很好,它起作用了,但是你有其他的方法吗?这将从表格重新计算中受益吗?