簡體   English   中英

Google Sheets 使用腳本將多張工作表合並為一張工作表

[英]Google Sheets combine several sheets into one sheet with script

我需要用腳本將幾張紙組合成一張紙。 此外,在組合工作表時,我需要通過將它們的名稱檢查為兩列來將它們分開。 例如,包含單詞“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))  
           
}

最好是創建兩個數組 - 用於匯總表的兩個不同范圍

  • 將“貓床單”附加到另一個“狗床單”
  • 由於您已經正確地找到並排序了您感興趣的工作表,因此在您的內部循環中,您可以定義一個輔助數組(每種類型的工作表一個單獨的數組),您可以將來自一種類型的所有工作表的數據附加到該數組中
  • 將此數組設置為目標工作表的所需范圍(邊)
  • 了解原始工作表的(最大)尺寸以正確划分目標工作表的最右側/右側非常重要。

樣本:

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(function(ns){  
    var i = neededSheets.indexOf(ns);
    filteredListOfSheetsNames[i]=[];
    allSheets_names.forEach( (as,index) => {                            
      if (as.indexOf(ns)>-1){
        filteredListOfSheetsNames[i].push(as);
        }
      }
    )
    const filteredListOfSheets  =  filteredListOfSheetsNames[i].map(name =>ss.getSheetByName(name));  
    var array = [];
    filteredListOfSheets.forEach(function(sheet){var values = sheet.getRange(1,1,sheet.getLastRow(),13).getValues(); array.push(values);});
    array = [].concat.apply([],array);
    if(array.length > 0){
      newSheet.getRange(1,i*13+1, array.length, array[0].length).setValues(array);
      }
    }
  )
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM