【问题标题】:Merge n Google spreadsheets files to n sheets将 Google 电子表格文件合并到 n 个工作表中
【发布时间】:2020-09-07 20:28:43
【问题描述】:

说,我有 100 个谷歌电子表格文件,我需要合并到一个包含 100 个标签(表格)的文件中。是否可以使用应用程序脚本。目前我在下面有一个代码,

function popForm() {
  var ss = SpreadsheetApp.getActive();
  for(var b = 0; b<100; b++){
  var sheet = ss.getSheetByName('Sheet '+b);
  var numberRows = sheet.getDataRange().getNumRows();
....
....

以上代码适用于具有 100 个选项卡(表格)的电子表格。但是我有 100 个带有一个标签(表格)的电子表格。

【问题讨论】:

  • 您在哪里以及如何定义这 100 个电子表格?它们在同一个文件夹下吗?它们是否随机位于您的 Google 云端硬盘中?
  • 如何知道您要处理哪 100 张电子表格?您是否将 ID 列表存储在工作表的列表中?或者您可以将 100 个电子表格存储在一个文件夹中吗?如果你这样做,这是可能的。
  • 以上代码为示例。这仅适用于我可以将 100 个文件合并为一个文件的情况。 @Marios 100 个文件随机位于谷歌驱动器中,但按字母顺序排列,如 file1file2file3 等。这些文件位于一个文件夹中
  • 对不起,在上面的评论中我是随机说的。它不是随机的,它在特定的文件夹中。
  • @JustineChacko 每个电子表格文件只有一张?请编辑您的问题,因为其他人不会阅读 cmets,并且您提供的新信息也不会被看到。

标签: google-apps-script google-sheets google-drive-api


【解决方案1】:

解释:

  • 您有一个带有FolderId 的文件夹,其中包含所有电子表格 文件。您可以使用getFolderById() 方法找到此文件夹。
  • 您使用getFiles() 方法获取此文件夹的文件,然后 您可以使用 while 循环来遍历这些文件。
  • 对于每个文件,您都会获得第一张纸,然后使用 源(活动)电子表格文件的copyTo() 方法。
  • 新创建的工作表将以它所来自的电子表格文件的名称命名。请随意更改此部分或让我知道,以便我进行修改。

解决方案:

你一定在找这个:

function myFunction() {

const source_sh = SpreadsheetApp.getActive();  
const folder = DriveApp.getFolderById('FolderId');
const files = folder.getFiles();
  
while (files.hasNext()) { 
    var file = files.next();    
    var target_ss = SpreadsheetApp.openById(file.getId()); 
    var target_sh = target_ss.getSheets()[0];
    target_sh.copyTo(source_sh).setName(file.getName());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2019-01-15
    • 2010-10-30
    相关资源
    最近更新 更多