Google表格通过脚本将多张表格合并为一张表格

时间:2020-08-27 18:03:16

标签: google-apps-script google-sheets

我需要用脚本将几张纸合并为一张纸。另外,在合并工作表时,我需要通过将其名称分为两列来将它们分开。例如,包含单词“ cat”的工作表应在左列,而包含单词“ dog”的工作表应在右列。目前,我有一个脚本可以将所有带有特定单词的表过滤到一个数组中。我是Google表格的新手,我们将不胜感激。

这是我当前的脚本:

function myFunction() 
 {
 var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var newSheet = activeSpreadsheet.getSheetByName("AllSheets");

if (newSheet != null) {
    activeSpreadsheet.deleteSheet(newSheet);
}

newSheet = activeSpreadsheet.insertSheet();
newSheet.setName("AllSheets");
   const ss = SpreadsheetApp.getActiveSpreadsheet();
   const allSheets = ss.getSheets();
   const allSheets_names=allSheets.map(sheet=>sheet.getSheetName())  

   const neededSheets= ["Cat", "Dog"];
   
   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))  
           
}

1 个答案:

答案 0 :(得分:1)

最好是为摘要表的两个不同范围创建两个数组

  • 在其中一个上附加“猫床单”,在另一个上附加“狗床单”
  • 由于您已经正确找到了感兴趣的表并对其进行了排序,因此在内部循环中,您可以定义一个辅助数组(每种类型的表都单独一个数组),然后将一种类型的所有表的数据附加到该辅助数组上
  • 将此数组设置为目标工作表的所需范围(侧面)
  • 重要的是要知道原始表的(最大)尺寸,以便正确地划分目标表的表边/右边。

示例:

java.io.EOFException
        at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1250)
        at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1190)
        at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72)
        at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171)
        at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151)
        at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
        at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)