如何创建一个脚本以将多个工作表合并到另一个工作表中?

时间:2018-12-20 21:11:25

标签: google-apps-script google-sheets

很抱歉,这不是我的优势!

我正在为负责培训课程的NGO工作。

我们有一个google工作表,可以在每个培训日内,在不同的电子表格中逐一汇总有关参与者的数据。

因此,我的年度文档由30个电子表格组成。 我想再创建一个电子表格,该电子表格将合并其他选项卡中的所有数据,以便: -能够快速查看谁尚未付款 -计算总金额

我知道我可以通过使用过滤器功能来完成此操作,但是对于许多电子表格而言,这确实很耗时,并且如果我添加培训课程,则必须更改公式。而且,我每年都会被迫这样做。

所以我想创建一个按钮,以将所有数据导入新电子表格中。

您将在这里找到仅包含两个电子表格的工作表示例: https://docs.google.com/spreadsheets/d/1-RxzUGJFXnU3_mJ3Qj0MCTpwPTlnmgIT439AchyrRrE/edit?usp=sharing

我希望你能帮助我!

感谢和新年快乐:D

2 个答案:

答案 0 :(得分:0)

合并同一电子表格中另一个工作表中的工作表。

您将需要名为“ CopiDdeFCCE”的电子表格的ID,其他参数将默认为“ CopieDdeFCCE”。

function mergeSpreadsheet(ssid,shname){
  var shname=shname || 'CopieDdeFCCE';
  var ss=SpreadsheetApp.openById(ssid);//id of spreadsheet named 'CopieDdeFCCE' in your case
  var sh=ss.getSheetByName(shname);//sheetname of sheet where other sheets are merged into again in your case its named 'CopieDdeFCCE'
  if(!sht){ss.insertSheet(shname);}
  var allshts=ss.getSheets();
  for(var i=0;i<allshts.length;i++){
    if(allshts[i].getName()!=shname){//do this for all sheets except shname
      var shi=allshts[i];
      var rg=shi.getDataRange();
      var vA=rg.getValues();
      shi.getRange(sh.getLastRow() + 1, 1,shi.getLastRow(),shi.getLastColumn()).setValues(vA);
    }
  }
}

请明确。

  • Google所谓的电子表格是包含所有标签(即工作表)的文件。
  • 在您的第一条评论中,您说了以下内容:我想将名为“ CopieDdeFCCE”的文件的全部28张工作表合并到相同文件的新工作表中。
  • 但是现在您的问题是:我想创建一个按钮,将所有数据导入新电子表格中。
  • 您在最后一条评论中说,您的命令如下所示:mergeSpreadsheet(“ 1KC6kHcgtLZ93S4-r4wOwHFOG6Rq3mesGRKv26Ttnm9E”,“ CopieDdeFFCE”)
  • 但是显然这不是示例的ID,并且示例中没有具有该名称的工作表。
  
    

所以我的问题是:您到底想要什么?

  

答案 1 :(得分:0)

很抱歉,我没有收到关于您的回复的任何通知,因为这是编辑操作,当我来看看您是否写了某些内容时,我查看了该网站的底部。 :/

首先,新年快乐,再次感谢您的帮助!

这是您要求的精度:

1°的确,我想将一个名为“ CopieDdeFCCE”的文件的所有28张纸合并到同一文件的新纸上。为了更准确,我为您提供了文档的确切位置的链接以及一些工作表示例:link

2°其次,我将创建一个按钮来轻松更新所有数据。但是我想我知道该怎么做,所以暂时不要问这个问题;)

3°在随附的文档中,我们是否同意“ id”为:1KC6kHcgtLZ93S4-r4wOwHFOG6Rq3mesGRKv26Ttnm9E?

再次感谢您的光临!