【问题标题】:Merging 140 separate google sheets into one将 140 个单独的 google 表格合并为一张
【发布时间】:2016-02-19 09:16:24
【问题描述】:

我有 140 张单独的工作表,并且计数合并为一张单独的工作表。通常的导入范围或数组等对于我必须合并的工作表数量来说太多了。

每张表的标题行是相同的,所以我只需要将每张表中从第 3 行开始的所有数据复制到新的主表中。每个中的数据量是可变的。我不介意复制包括标题在内的所有内容,因为我可以使用过滤器手动删除它们。

我找到了我运行的这段代码 (https://ctrlq.org/code/19980-merge-google-spreadsheets),但在参数列表之后我不断收到错误 - Missing )。 (第 4 行,文件“代码”)

我将 SOURCE 设置为保存我要合并的所有文件的文件夹键。我是编写脚本的新手:

function mergeSheets() {

  /* Retrieve the desired folder */
  var myFolder = DriveApp.getFoldersByName(SOURCE).next();

  /* Get all spreadsheets that resided on that folder */
  var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet");

  /* Create the new spreadsheet that you store other sheets */  
  var newSpreadSheet = SpreadsheetApp.create("Merged Sheets");

  /* Iterate over the spreadsheets over the folder */
  while(spreadSheets.hasNext()) {

    var sheet = spreadSheets.next();

    /* Open the spreadsheet */
    var spreadSheet = SpreadsheetApp.openById(sheet.getId());

    /* Get all its sheets */
    for(var y in spreadSheet.getSheets()) {

      /* Copy the sheet to the new merged Spread Sheet */
      spreadSheet.getSheets()[y].copyTo(newSpreadSheet); 
    }
  }      
}

谁能告诉我这个错误是什么意思?我没有错过任何)。我怀疑问题在于我是如何定义 SOURCE 的?

谢谢

【问题讨论】:

  • 这是您代码中的代码还是示例的文字副本?我似乎无法复制您的问题。
  • 从你所说的来看,我认为这段代码没有达到你的预期。这是使用 copyTo(newSpreadsheet) developers.google.com/apps-script/reference/spreadsheet/… 的文档,它将一个选项卡/选项卡,即工作表从不同的电子表格复制到一个电子表格中(但仍然是相同数量的选项卡,但现在只在一个电子表格中)。您需要定义如何定位所有 140 个电子表格及其选项卡。它们是否都在一个文件夹中......并且它们是该文件夹中唯一的文件吗?每个ss是否只包含你需要复制的标签?
  • @RobinGertenbach 我有上面粘贴的代码,除了 SOURCE 我有存储 140 个文件的谷歌驱动器文件夹的密钥
  • @DavidTew 它的 140 个文件都在一个文件夹中,我想将一个选项卡复制到一个主文件中
  • 我会试试代码,让你知道我得到了什么

标签: google-apps-script merge google-sheets


【解决方案1】:

尝试像这样的第一部分并尝试从这里弄清楚。

var folder= DriveApp.getFolderById('Your_folderID');
var files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);//this is the right getFilesByType string
     while (files.hasNext()) {
       var sheet = SpreadsheetApp.open(files.next());
       var spreadSheet = SpreadsheetApp.openById(sheet.getId());
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var newSpreadSheet = ss.getActiveSheet();

它只是一个包含 140 张工作表的电子表格,还是将这些工作表划分为多个电子表格?当您说 copyTo 时,您可能还想设置一个范围。像

for(var y in spreadSheet.getSheets()) {

  var Allsheets = spreadSheet.getSheets[y]();
  var data = Allsheets.getDataRange().getValues();{
            var target = new Array();
            for(n=0;n<data.length;++n){
                target.push(data[n]);
        }
    }
    newSpreadsheet.getRange(2,1,target.length,target[0].length).setValues(target);
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2016-09-08
    • 2019-02-05
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多