Javascript 如何将多张g表中的数据合并到一张g表中?
以下是带有示例的链接: 我想将“第一”、“第二”和“第三”选项卡中的数据合并到“合并”选项卡中,所有这些选项卡都位于相同的标题下(标题、类型、类型) 请告诉我是否有此脚本-因为我需要使用它的实际文档有30多个选项卡,并且公式可能会崩溃。说明: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
- 以下脚本用于在工作表上迭代,
排除
数组中提到的那些exclude_sheets
- 对于每个工作表,它将在脚本开头需要设置的特定范围之间的值存储到
数组中数据
- 范围从列A(
)和列C(start\u col=1
)之间的6行(end\u col=3
)开始。结束行定义为包含内容的最后一行,因此您无需手动设置它,并且在图纸之间也可以不同。但是,图纸之间的起始行和列范围必须相同start\u row
- 它最后将
粘贴到测试表(数据
),从单元格A2开始res_sheet='Test'
谷歌应用程序脚本解决方案: 在使用此解决方案之前,请确保已启用
参考资料:
- 以下脚本用于在工作表上迭代,
排除
数组中提到的那些exclude_sheets
- 对于每个工作表,它将在脚本开头需要设置的特定范围之间的值存储到
数组中数据
- 范围从列A(
)和列C(start\u col=1
)之间的6行(end\u col=3
)开始。结束行定义为包含内容的最后一行,因此您无需手动设置它,并且在图纸之间也可以不同。但是,图纸之间的起始行和列范围必须相同start\u row
- 它最后将
粘贴到测试表(数据
),从单元格A2开始res_sheet='Test'
谷歌应用程序脚本解决方案: 在使用此解决方案之前,请确保已启用
参考资料:
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);
}