如何使用Google App Script合并Google电子表格中的多个标签?所有标签中的数据都在不断变化。
例如,我有' Sheet1',' Sheet2'和' Sheet3'在Google电子表格中。所有这些表格中的数据都有3列 - 姓名和电子邮件ID&区域。现在,我想将这3张/标签中的数据合并/合并到第4张表格中,即表格4'具有相同的列(名称,电子邮件ID和区域)。第四张表应该有数据 - Sheet1的数据,然后是Sheet2,然后是Sheet3。所有3张纸中的行数不断变化。
答案 0 :(得分:6)
= filter({{Sheet1!A1:C500};{Sheet2!A1:C500};{Sheet3!A1:C500}},{{Sheet1!A1:A500};{Sheet2!A1:A500};{Sheet3!A1:A500}}<>"")
我没有测试过这个。它只是作为一种可能的解决方案突然出现在我脑海中。我不会为此使用脚本; YMMV的工作表公式要快得多,至少在大多数情况下都是如此。 确保使用分号分隔页面部分,否则它将不起作用。分号是数组文字的End_Of_Row运算符。
如果你真的想使用脚本......
function combineSheets() {
var sApp = SpreadsheetApp.getActiveSpreadsheet();
var s1= sApp.getSheetByName("Sheet1");
var s2= sApp.getSheetByName("Sheet2");
var s3= sApp.getSheetByName("Sheet3");
var s4= sApp.getSheetByName("Sheet4");
// If Sheet4 doesn't exist you'll need to create it here.
var s1values = s1.getRange(1,1,s1.getLastRow(),3).getValues();
var s2values = s2.getRange(1,1,s2.getLastRow(),3).getValues();
var s3values = s3.getRange(1,1,s3.getLastRow(),3).getValues();
// Now, we can put out all together and stuff it in Sheet4
var s4values = [];
s4values = s1values.concat(s2values,s3values);
s4.getRange(1,1,s4values.length,3).setValues(s4values);
}
答案 1 :(得分:4)
您不需要脚本。在第四张表格中,在A2中输入以下公式:
<a href="https://www.facebook.com/dialog/feed?app_id=1111111111111111&display=popup&message=test&summary=test2&link=http%3A%2F%2Fwww.google.com%2F&description=Lorem ipsum dolor sit amet&picture=https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150&name=myName&caption=my%20fancy%20caption&redirect_uri=google.de&mood=reading" target="_blank" title="Share on Facebook">Share on Facebook</a>
返回列A-C的内容,其中A列中的条目为非空,并将它们堆叠在一个数组中。
答案 2 :(得分:1)
您可以使用Google Apps脚本。
var ss = SpreadsheetApp.getActiveSpreadsheet();
function TotalsSheet() {
var totaldata = [];
var sheets = ss.getSheets();
var totalSheets = 2;
for (var i=0; i < totalSheets; i++) {
var sheet = sheets[i];
var range = sheet.getDataRange();
var values = range.getValues();
for (var row in values) {
totaldata.push(values[row]);
}
}
return totaldata;
}
function Start() {
var All = ss.insertSheet("All-Values");
var totaldata = TotalsSheet();
for (var i = 0; i < totaldata.length; i++) {
All.appendRow(totaldata[i]);
}
}
答案 3 :(得分:0)
我做了一个会做九个标签的选项。合并,包含更多行和列。
=filter({{Sheet1!A1:Q500};{Sheet2!A1:Q500};{Sheet3!A1:Q500};{Sheet4!A1:Q500};{Sheet5!A1:Q500};{Sheet6!A1:Q500};{Sheet7!A1:Q500};{Sheet8!A1:Q500};{Sheet9!A1:Q500}},{{Sheet1!A1:A500};{Sheet2!A1:A500};{Sheet3!A1:A500};{Sheet4!A1:A500};{Sheet5!A1:A500};{Sheet6!A1:A500};{Sheet7!A1:A500};{Sheet8!A1:A500};{Sheet9!A1:A500}}<>"")
我想知道这是否是一种概括初始过滤器公式的方法,以便您可以剪切和粘贴更多的工作表编号,例如,如果有20个或30个选项卡包含25个列,您是否可以合并轻松进入一个页面?
答案 4 :(得分:0)
//此脚本必须更快
function consolidateData(){
// defined all variables
var sheetNames = [];
var dataSheet = [];
var dataValues = [];
var conso=[];
var header = [["Name","email ID","Region"]];
var ws = SpreadsheetApp.getActiveSpreadsheet();
// get all sheets
var allsheets = ws.getSheets();
for(var s in allsheets){
var sheet = allsheets[s];
sheetNames[s] = sheet.getName();
dataSheet[s] = ws.getSheetByName(sheetNames[s]);
// adding all sheet's data to a single variable
conso = conso.concat(dataSheet[s].getRange("A2:C"+dataSheet[s].getLastRow()).getValues());
}
// writing data into new sheet
var newSheet = ws.insertSheet().setName("Consolidated_Data");
newSheet.getRange("A1:C1").setValues(header);
newSheet.getRange("A2:C"+(conso.length+1)).setValues(conso);
}