Javascript 如何将多张g表中的数据合并到一张g表中?

Javascript 如何将多张g表中的数据合并到一张g表中?,javascript,google-apps-script,google-sheets,google-sheets-formula,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Google Sheets Formula,Google Sheets Api,以下是带有示例的链接: 我想将“第一”、“第二”和“第三”选项卡中的数据合并到“合并”选项卡中,所有这些选项卡都位于相同的标题下(标题、类型、类型) 请告诉我是否有此脚本-因为我需要使用它的实际文档有30多个选项卡,并且公式可能会崩溃。说明: 以下脚本用于在工作表上迭代, 排除exclude_sheets数组中提到的那些 对于每个工作表,它将在脚本开头需要设置的特定范围之间的值存储到数据数组中 范围从列A(start\u col=1)和列C(end\u col=3)之间的6行(start

以下是带有示例的链接:

我想将“第一”、“第二”和“第三”选项卡中的数据合并到“合并”选项卡中,所有这些选项卡都位于相同的标题下(标题、类型、类型)

请告诉我是否有此脚本-因为我需要使用它的实际文档有30多个选项卡,并且公式可能会崩溃。

说明:
  • 以下脚本用于在工作表上迭代, 排除
    exclude_sheets
    数组中提到的那些

  • 对于每个工作表,它将在脚本开头需要设置的特定范围之间的值存储到
    数据
    数组中

  • 范围从列A
    start\u col=1
    )和列C
    end\u col=3
    )之间的6行(
    start\u row
    )开始。结束行定义为包含内容的最后一行,因此您无需手动设置它,并且在图纸之间也可以不同。但是,图纸之间的起始行和列范围必须相同

  • 它最后将
    数据
    粘贴到测试表(
    res_sheet='Test'
    ),从单元格A2开始

请随意修改上面的参数,但要尊重底层逻辑,否则脚本将无法正常工作


谷歌应用程序脚本解决方案: 在使用此解决方案之前,请确保已启用


参考资料:
说明:
  • 以下脚本用于在工作表上迭代, 排除
    exclude_sheets
    数组中提到的那些

  • 对于每个工作表,它将在脚本开头需要设置的特定范围之间的值存储到
    数据
    数组中

  • 范围从列A
    start\u col=1
    )和列C
    end\u col=3
    )之间的6行(
    start\u row
    )开始。结束行定义为包含内容的最后一行,因此您无需手动设置它,并且在图纸之间也可以不同。但是,图纸之间的起始行和列范围必须相同

  • 它最后将
    数据
    粘贴到测试表(
    res_sheet='Test'
    ),从单元格A2开始

请随意修改上面的参数,但要尊重底层逻辑,否则脚本将无法正常工作


谷歌应用程序脚本解决方案: 在使用此解决方案之前,请确保已启用


参考资料:

嘿,马里奥斯,谢谢你。我尝试将其用于我的实际文档,只更改了“排除”和“恢复”表中的选项卡名称,但出现了以下错误:异常:该范围内的行数必须至少为1。(第77行,文件“onOpen”)知道这里出了什么问题吗?我没有调整其他任何东西(我启用了V8)@Christina我在哪里使用了
onOpen
?请转到视图=>脚本编辑器并运行
myFunction
。我把它添加到了你的文件中。数据将从第二行开始添加到
测试
工作表中(这就是为什么我清除了该工作表中的标题除外)。@Christina如果您想从
onOpen
菜单执行此功能,请告诉我。但是,请记住,您需要向我提供完整的代码,因为如果您已经使用了
onOpen
功能,我必须对其进行调整以使其正常工作。我共享的文档只是我创建的一个示例表。我将代码粘贴到实际的文档中(我无法共享),在该文档上我有更多的功能-onOpen只是文件名,但我使用了您的确切代码,我得到了错误(我所做的唯一更改是在exclude和res的选项卡名中)鉴于我无法与您共享原始文档-知道错误可能来自何处吗?@Christina该错误表明其中一张工作表在我在回答中解释的范围内有0个条目。检查每张工作表的数据是否在
A6:C
范围内。嘿,Marios,谢谢你。我尝试将其用于我的实际文档,只更改了“排除”和“恢复”表中的选项卡名称,但出现了以下错误:异常:该范围内的行数必须至少为1。(第77行,文件“onOpen”)知道这里出了什么问题吗?我没有调整其他任何东西(我启用了V8)@Christina我在哪里使用了
onOpen
?请转到视图=>脚本编辑器并运行
myFunction
。我把它添加到了你的文件中。数据将从第二行开始添加到
测试
工作表中(这就是为什么我清除了该工作表中的标题除外)。@Christina如果您想从
onOpen
菜单执行此功能,请告诉我。但是,请记住,您需要向我提供完整的代码,因为如果您已经使用了
onOpen
功能,我必须对其进行调整以使其正常工作。我共享的文档只是我创建的一个示例表。我将代码粘贴到实际的文档中(我无法共享),在该文档上我有更多的功能-onOpen只是文件名,但我使用了您的确切代码,我得到了错误(我所做的唯一更改是在exclude和res的选项卡名中)鉴于我无法与您共享原始文档-知道错误可能来自何处吗?@Christina该错误表明其中一张工作表在我在回答中解释的范围内有0个条目。检查每张图纸的数据是否在范围内
A6:C
function myFunction() {
  
  const ss = SpreadsheetApp.getActive();
  const sheets = ss.getSheets();
  const exclude_sheets = ['Combined','Test'];
  const res_sheet = 'Test';
  const start_row = 6;
  const start_col = 1;
  const end_col = 3;
  
  const data = []
  sheets.forEach(sh=>{
                 
  if(!exclude_sheets.includes(sh.getName())){
  let temp = sh.getRange(start_row,start_col,sh.getLastRow()-start_row+1,end_col).getValues()
  data.push(...temp);
  }});

 ss.getSheetByName(res_sheet).getRange(2,1,data.length,data[0].length).setValues(data);
 
}