防止重复 Google 脚本复制具有范围内文件名的文件

Prevent Duplicate Google Script Copy A File with Filenames from Range

我可以复制文件并重命名电子表格范围内的新副本。如果我重新执行脚本,如何不创建现有文件名。

function copyDocs() {
  var file = SpreadsheetApp.openById('fileID-spreadsheet');
  var ss = file.getSheetByName('List');
  var data = ss.getRange(2,1,ss.getLastRow()-1,1).getValues();

  for (var i in data) {
    var drive = DriveApp.getFileById('fileID-template');
    drive.makeCopy(data[i][0]);
  };
}

这是我根据答案得出的最终脚本

function copyDocs() {
  try {
    let spread = SpreadsheetApp.openById('fileID-spreadsheet');
    let sheet = spread.getSheetByName('List');
    let data = sheet.getRange(2,1,sheet.getLastRow()-1,1).getValues();
    let file = DriveApp.getFileById('fileID-template');
    let folder = file.getParents().next();

    for( let i=0; i<data.length; i++ ) {
      let files = folder.getFilesByName(data[i][0]);
      if( !files.hasNext() ) {
        file.makeCopy(data[i][0],folder);
      }
    }
  }
  catch(err) {
    console.log(err);
  }
}

描述

这是一个复制文件但检查同名文件是否不存在的简单示例。

这假定文件位于子文件夹中,与模板文件位于同一文件夹中。它还假设只能有一个文件具有相同的文件名。

我已经使用了我的文件,因此您需要根据您的要求检查任何 file/spreadsheet 参考资料。

脚本

function copyDocs() {
  try {
    let spread = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = spread.getSheetByName("Sheet1");
    let data = sheet.getDataRange().getValues();
    let file = DriveApp.getFileById(spread.getId());
    let folder = file.getParents().next();

    for( let i=0; i<data.length; i++ ) {
      let files = folder.getFilesByName(data[i][0]);
      if( !files.hasNext() ) {
        file.makeCopy(data[i][0],folder);
      }
    }
  }
  catch(err) {
    console.log(err);
  }
}

参考

]4