将新文件移动到特定文件夹! google 脚本

Move a new file to a specific folder! google script

我已经编写了一个应该可以运行的简短脚本,但是我返回了一个错误,我不明白为什么。

错误是“异常:参数 (DriveApp.File) 与 DriveApp.File.moveTo 的方法签名不匹配。 新表“

我的脚本在下面,提前感谢任何能看到错误的人。

    function NewSheets() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ss1 = ss.getSheetByName('URL');

  for(i=1;i<ss1.getLastRow();i++){
    var s1 = ss1.getRange(i+1,6).getValue()
    var folder = DriveApp.getFileById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322');
    var newSS = SpreadsheetApp.create('STSOR - '+s1)
    var id = newSS.getId()
    DriveApp.getFileById(id).moveTo(folder);
    var paste = ss.getSheetByName(s1).copyTo(newSS).setName('STSOR - '+s1)
    ss1.getRange(i+1,2).setValue(id)

  }


}

您正在将文件移动到另一个文件。您应该在这一行使用 getFolderById()

var folder = DriveApp.getFileById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322');

您的代码还有其他问题。没有理由在循环的每次迭代中都获取文件夹。您还应该将 getRange() 和其他 API 调用移到循环之外。通读 best practices 以获得更高质量的代码。

我想这就是你想要的

function NewSheets() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName('URL');
  const fldr = DriveApp.getFolderById('folderid');
  const vs = sh.getRange(2, 6, sh.getLastRow() - 1, 1).getValues();
  vs.forEach((r, i) => {
    let newss = SpreadsheetApp.create('STSOR - ' + r[0]);
    let id = newss.getId();
    DriveApp.getFileById(id).moveTo(fldr);
    ss.getSheetByName(r[0]).copyTo(newss).setName('STSOR - ' + r[0]);
    sh.getRange(i + 1, 2).setValue(id);
  });
}