Javascript 谷歌表单合并时分离表单

Javascript 谷歌表单合并时分离表单,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我需要组合有一个单词“狗”或一个单词“猫”在他们的表。目前,我有一个脚本,可以过滤具有这些名称的工作表,并将它们合并到一个工作表中。现在的问题是,我想在主工作表的左侧列出所有名为“dog”的工作表,在主工作表的右侧列出名为“cat”的工作表,它应该看起来像主工作表中不同工作表的两列。我还想在每张工作表之后创建一个空行,这样它更具可读性。我所有的工作表都有13列(狗工作表有10行,猫工作表有9行)。目前,所有东西都在混合在一起。以下是我当前的脚本: function myFunction()

我需要组合有一个单词“狗”或一个单词“猫”在他们的表。目前,我有一个脚本,可以过滤具有这些名称的工作表,并将它们合并到一个工作表中。现在的问题是,我想在主工作表的左侧列出所有名为“dog”的工作表,在主工作表的右侧列出名为“cat”的工作表,它应该看起来像主工作表中不同工作表的两列。我还想在每张工作表之后创建一个空行,这样它更具可读性。我所有的工作表都有13列(狗工作表有10行,猫工作表有9行)。目前,所有东西都在混合在一起。以下是我当前的脚本:

function myFunction() 
 {
   var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
   var newSheet = activeSpreadsheet.getSheetByName("MainSheet");
   
   if (newSheet != null) {
        activeSpreadsheet.deleteSheet(newSheet);
    }

   newSheet = activeSpreadsheet.insertSheet();
   newSheet.setName("MainSheet");
   
   const ss = SpreadsheetApp.getActiveSpreadsheet();
   const allSheets = ss.getSheets();
   const allSheets_names=allSheets.map(sheet=>sheet.getSheetName())  
   const dataRange = "A1:M";
   const checkRange = "A1:A";
   const neededSheets= ["Dogs", "Cats"];
   
   const filteredListOfSheetsNames = []   
   neededSheets.forEach(ns =>allSheets_names.forEach( (as,index) =>
       {if (as.indexOf(ns)>-1){filteredListOfSheetsNames.push(as)}}))                   
   const filteredListOfSheets =  filteredListOfSheetsNames.map(name =>ss.getSheetByName(name))  
   let formulaArray = filteredListOfSheets.map(s => `FILTER({'${s.getSheetName()}'!${dataRange}},'${s.getSheetName()}' !${checkRange}<>"")`);
   let formulaText = "={" + formulaArray.join(";") + "}";
   ss.getSheetByName("MainSheet").getRange("A1").setFormula(formulaText);

}
函数myFunction()
{
var activeSpreadsheet=SpreadsheetApp.getActiveSpreadsheet();
var newSheet=activeSpreadsheet.getSheetByName(“MainSheet”);
如果(新闻纸!=null){
activeSpreadsheet.deleteSheet(新闻纸);
}
newSheet=activeSpreadsheet.insertSheet();
新闻纸。设置名称(“主页”);
const ss=SpreadsheetApp.getActiveSpreadsheet();
const allSheets=ss.getSheets();
const allSheets_name=allSheets.map(sheet=>sheet.getSheetName())
const dataRange=“A1:M”;
const checkRange=“A1:A”;
const needsheets=[“狗”、“猫”];
常量filteredListOfSheetsNames=[]
neededSheets.forEach(ns=>allSheets_name.forEach((as,索引)=>
{if(as.indexOf(ns)>-1{filteredListOfSheetsNames.push(as)}))
const filteredListOfSheets=filteredListOfSheetsNames.map(name=>ss.getSheetByName(name))
让formulaArray=filteredListOfSheets.map(s=>`FILTER({${s.getSheetName()}'!${dataRange},${s.getSheetName()}'!${checkRange}')`);
让formulaText=“={”+formulaArray.join(“;”+“}”;
ss.getSheetByName(“主表”).getRange(“A1”).setFormula(公式文本);
}
请问是否有人知道如何根据主页左右两侧的名称来订购这些纸张? 任何帮助都将不胜感激。 这就是主表应该是什么样子,一边是不同的猫表,另一边是不同的狗表,我还想在表之间留出一些空间,这样更容易阅读。我想用公式查询数据


我在你的代码中看到你在使用公式。您希望通过公式或通过脚本的硬拷贝来查询数据吗?另外,一份包含样本数据的工作表副本将帮助我们了解预期输出。@Marios您好,我已经更新了我的问题。我想用一个公式来查询数据。你的问题解决了吗?还是你还遇到了另一个问题?@ziganotschka是的,非常感谢!我也在那个问题中添加了关于某件事的评论。这是否回答了你的问题?