将一个 sheet 复制到同一文件夹中的许多其他传播 sheet

Copy one sheet to many others spreadsheets at the same folder

我在一个文件夹中有很多 spreadsheets,今天我在其中一个 spreadsheets 中开发了一个新的 sheet(标签)。我有一个代码可以将一个 sheet 复制并粘贴到另一个传播sheet,但是为此还有另一种没有代码的方法。

我的目标是:

这是我一对一复制的代码:

function sendspreadsheet(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var aba = source.getSheets()[13];
var destination = SpreadsheetApp.openByUrl('https:sheetID');
aba.copyTo(destination);}

@Tanaike 在 post 上就类似问题提供了很大的帮助: 我研究了这段代码和 Google Class Sheet , 但有些东西不工作。

我正在尝试在同一文件夹中复制一对多传播sheet的代码:

     Function sendtomultiple(){
        var source = SpreadsheetApp.getActiveSpreadsheet();
        var aba = source.getSheets()[13];
        var destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
          var sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
        while (sheetDestino.hasNext()) {
            SpreadsheetApp.open(sheetDestino.next()).getSheets().forEach(aba => {
              aba.copyTo(sheetDestino);          
            });
        };
       }

我猜 while 指令中的这一行是问题所在,我尝试了其他选项,但都是 return 错误消息,请输入:

Exception: The parameters (DriveApp.FileIterator) don't match the method signature for SpreadsheetApp.Sheet.copyTo.

希望有人能帮助解决这个问题。

解释/问题:

您的目标是将特定的 sheet(制表符)复制到同一文件夹内的多个跨页sheet中。

红利代码:

  • 我添加了一个 if 条件以确保代码不会尝试将 sheet 复制到原始传播 sheet 文件。

  • 我加了一段代码,把复制的sheet到目的地sheet重命名为原来的名字。默认值为 copy of Sheet14...

解决方案:

function sendtomultiple(){
    const source = SpreadsheetApp.getActiveSpreadsheet();
    const source_id = source.getId();
    const aba = source.getSheets()[13];
    const destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
    const sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
    while (sheetDestino.hasNext()) {
          let target_file = sheetDestino.next();
          let target_id = target_file.getId();
          let target_ss = SpreadsheetApp.openById(target_id);
          if(target_id!=source_id){
             aba.copyTo(target_ss).setName(aba.getName());          
          } 
    };
}

请记住,sheet getSheets()[13] 是 spreadsheet 文件中的第 14 个 sheet。如果你想获得第 13 个 sheet 你需要使用 getSheets()[12].