google-apps-script - 如何在 Google Apps 脚本中获取空白工作表的名称?
问题描述
我正在尝试制作一个 Google Apps 脚本,它将过滤器功能应用于我的电子表格中的每个工作表,但某些工作表除外。我希望它忽略特定的命名表以及“blankSheet”变量。我希望“blankSheet”包含在特定单元格范围(A2:H)中没有数据的任何工作表。
我尝试了以下操作,但我的电子表格中生成的过滤器功能仍然包含一个空工作表。谢谢您的帮助!
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const shts = ss.getSheets().filter(sh => sh.getDataRange().isBlank()).map(s => s.getName()).join(',');
//set variables
const masterSheet = "master";
const masterSheetFormulaCell = "A2";
const ignoreSheets = ["notifications","main",shts];
const dataRange = "A2:I";
const checkRangeA = "A2:A";
const checkRangeB = "B2:B";
const checkRangeC = "C2:C";
const checkRangeD = "D2:D";
const checkRangeE = "E2:E";
const checkRangeF = "F2:F";
const checkRangeG = "G2:G";
const checkRangeH = "H2:H";
const checkRangeI = "I2:I";
//end set variables
ignoreSheets.push(masterSheet);
const allSheets = ss.getSheets();
const filteredListOfSheets = allSheets.filter(s => ignoreSheets.indexOf(s.getSheetName()) == -1);
let formulaArray = filteredListOfSheets.map(s => `FILTER({'${s.getSheetName()}'!${dataRange},"${s.getSheetName()}" &LEFT(ROW('${s.getSheetName()}'!${checkRangeA}),0),ROW('${s.getSheetName()}'!${checkRangeA})},'${s.getSheetName()}'!${checkRangeB}&'${s.getSheetName()}'!${checkRangeC}&'${s.getSheetName()}'!${checkRangeD}&'${s.getSheetName()}'!${checkRangeE}&'${s.getSheetName()}'!${checkRangeF}&'${s.getSheetName()}'!${checkRangeG}&'${s.getSheetName()}'!${checkRangeH}&'${s.getSheetName()}'!${checkRangeI}<>"")`);
let formulaText = "=SORT({" + formulaArray.join(";") + "},10,True,11,True)";
ss.getSheetByName(masterSheet).getRange(masterSheetFormulaCell).setFormula(formulaText);
}
解决方案
这种类型的操作可能对查找空白表很有用:
function blankSheets() {
const ss = SpreadsheetApp.getActive();
let shts = ss.getSheets().filter(sh => sh.getDataRange().isBlank()).map(s => s.getName()).join(',');
Logger.log(shts);
return shts;//returns an array of blank sheet names
}
您说您想将空白表名称数组分配给单个 const 那么如何:
const shts = ss.getSheets().filter(sh => sh.getRange(2,1,100,9).isBlank()).map(s => s.getName()).join(',');
filter 函数仅返回空白表,map 部分仅返回空白表名称,而 join 部分返回所有以逗号分隔的名称。
推荐阅读
- javascript - ajax 脚本加载次数过多
- java - Kafka 单元测试事务与 MockProducer 和 MockConsumer
- javascript - 如果react-select中的项目长度为1,如何动态添加isFixed?
- r - 滞后函数之和
- algorithm - 这个说法是否正确:`2^{n}−1=Θ(Fibonacci(n+1) - 1)`?
- dataframe - R中的多个if条件和过滤器
- tabs - Notepad++ 将特定行与第二行合并
- string - Python,用元素创建一个字符串,在它们之间添加逗号
- react-native - Expo中的FlatList在再次刷新项目后加载并渲染项目两次导致重复键
- dpdk - rte_eth_tx_burst() 描述符/mbuf 管理保证与免费阈值