javascript - 如何使用 Google App Scripts 从工作表名称创建字符串?
问题描述
我正在尝试通过添加所有工作表名称(名称中同时包含字母和数字)来创建一个字符串。我需要生成的确切字符串是从 =QUERY 到 0),其中 PHY4101、MATH4103、HUM4105、ICTE4115 等来自电子表格的工作表名称。最后,字符串将被设置为工作Master
表 A2 单元格的值。如何解决?
要生成的确切字符串: =QUERY({PHY4101!A2:F;MATH4103!A2:F;HUM4105!A2:F;ICTE4115!A2:F;ICTE4117!A2:F;ICTE4143!A2:F;PHY4102!A2: F;HUM4106!A2:F;ICTE4144!A2:F},"select * where Col3 is not null",0)
function formatSheetsP3() {
var sss = SpreadsheetApp.getActiveSpreadsheet();
const allsheets = sss.getSheets().filter(sh => /\d/.test(sh.getName()));
for(var s in allsheets){
var sheet = allsheets[s].getName();
var str = '=QUERY({'+ sheet + '!A2:F;'
}
str2 = str + '},"select * where Col3 is not null",0)';
var master = sss.getSheetByName("Master");
master.getRange("A2").setValue(str2);
}
解决方案
映射、过滤和加入:
const formula = `=QUERY({${sss
.getSheets()
.map(sh => `${sh.getName()}!A2:F`)
.filter(sh => /\d\!A2:F$/.test(sh))
.join(';')}},"select * where Col3 is not null",0)`;
推荐阅读
- php - 如何运行所有 csv 数据以使用 curl 获取数据
- sas - 返回过去 16 年的特定日期
- html - 如何仅更改引导表的外边界的属性
- performance - 缓存视频文件 - 好习惯与否
- linux - 如何从 git 历史记录中清除多余的合并?
- aws-appsync - Appsync Javascript 订阅开始问题
- azure - 如何将当前时间标记为 ARM 部署的标记
- javascript - 将 redux store 传递给 react-dom/server 的 renderToString() 方法
- c - 按位和超过 32 位
- c++ - 有没有办法获取 .so 文件的源代码?