如何使用Google App Script合并Google电子表格中的多个标签?

aks*_*aks 6 google-sheets google-apps-script

如何使用Google App Script合并Google电子表格中的多个标签?所有标签中的数据都在不断变化.

例如,我在Google电子表格中有'Sheet1','Sheet2'和'Sheet3'.所有这些表格中的数据都有3列 - 姓名和电子邮件ID和地区.现在,我想将这3张/标签中的数据合并/组合成第4张,即"Sheet 4"具有相同的列(名称,电子邮件ID和区域).第四张表应该有数据 - Sheet1的数据,然后是Sheet2,然后是Sheet3.所有3张纸中的行数不断变化.

Har*_*ale 7

= filter({{Sheet1!A1:C500};{Sheet2!A1:C500};{Sheet3!A1:C500}},{{Sheet1!A1:A500};{Sheet2!A1:A500};{Sheet3!A1:A500}}<>"")
Run Code Online (Sandbox Code Playgroud)

我没有测试过这个.它只是作为一种可能的解决方案突然出现在我脑海中.我不会为此使用脚本; 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);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

您不需要为此编写脚本。在第四张表的 A2 中输入以下公式:

={filter(Sheet1!A2:C, len(Sheet1!A2:A)); filter(Sheet2!A2:C, len(Sheet2!A2:A)); filter(Sheet3!A2:C, len(Sheet3!A2:A))}
Run Code Online (Sandbox Code Playgroud)

它返回 A 列中的条目非空的 AC 列的内容,并将它们堆叠在一个数组中。