将 sheet 复制到新跨页sheet,将单元格值添加到新跨页sheet 名称的末尾

Copy sheet to new spreadsheet, Add cell value to end of new spreadsheet name

现在正在创建副本并将文本添加到文件名的末尾。新文件位于与原始文件相同的目录中。我似乎无法将新文件移动到 "Timesheet Archive" 文件夹。似乎我应该能够指定新文件的位置?

var range = sheet.getRange(2,7); 
var data = range.getValue();
var SSID = '1S3Vj5lYOchh0OJ5ZCamsoMCKtcTHeFd72nyxPHJYofk'
var CopyDate = Utilities.formatDate(data , "GMT-8", "yy_MM_dd"); 
var folder = DriveApp.getFoldersByName('Timesheet Archive'); 
var id = DriveApp.getFileById(SSID)
id.makeCopy(SpreadsheetApp.openById(SSID).getName() + "_" + CopyDate); 

我要迁移到 Google 的新表格,但在使用此功能时遇到了问题,该功能在迁移之前运行良好:

function exportData() {
  var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Timesheet");
  var sourceData = sourceSheet.getDataRange().getValues();
  sourceData.splice(0,1);  // Remove header

  var targetSS = SpreadsheetApp.openById("1ZKQw9WnAFmJfC6GP_CYmSbQK_820zIR6oQGnLMc1yBM").getSheetByName("Master Time Sheet");
  var targetRangeTop = targetSS.getLastRow(); // Get # rows currently in target
  targetSS.getRange(targetRangeTop+1,1,sourceData.length,sourceData[0].length).setValues(sourceData);

  var sheet = SpreadsheetApp.getActive().getSheetByName('Timesheet');
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var name = ss.getName();  // Not necessary 

  var sheet = ss.getSheetByName('Timesheet'); // or whatever is the name of the sheet 
  var range = sheet.getRange(2,7); 
  var data = range.getValue();

  var SSID = '1S3Vj5lYOchh0OJ5ZCamsoMCKtcTHeFd72nyxPHJYofk'
  var CopyDate = Utilities.formatDate(data , "GMT-8", "yy_MM_dd"); // Function Date + Format

  var folder = DocsList.getFolder('Timesheet Archive'); //Use this line if you want to get the folder by name
  var backup = DocsList.getFileById(SSID).makeCopy(SpreadsheetApp.openById(SSID).getName() + "_" + CopyDate);

  backup.addToFolder(folder); //This line will move the file
  backup.removeFromFolder(DocsList.getRootFolder()); //This line is needed to remove the File from the Root
}

第一部分将 sheet 的一部分复制到另一个现有的 spreadsheet 并且这部分功能正常工作。第二部分复制整个 sheet,使用这个复制的 sheet 的名称和数据创建一个新文件,并使用位于源 sheet。它应该首先将它移动到根文件夹,然后再移动到另一个名为 "Timesheet Archive" 的文件夹。

我没有收到任何错误,文件既没有出现在根文件夹中,也没有出现在 "Timesheet Archive" 文件夹中。

您正在使用:

DriveApp.getFoldersByName('Timesheet Archive');

得到一个“文件夹迭代器”

您需要使用:

getFolderById(id)

或者遍历文件夹,(即使可能只有一个!)

while (folders.hasNext()) {
  var folder = folders.next();
  if (folder === 'Timesheet Archive') {
    //Make copy here
    
  };
}

文件 Class 没有 addToFolder() 方法。 backup 是一个文件。 makeCopy() 方法有一个 destination 选项。您可以同时创建备份并将其放入目标。

https://developers.google.com/apps-script/reference/drive/file#makeCopy(String,Folder)

使用您的 folder 变量,即文件夹类型作为目标。