将工作表复制到新的电子表格,将单元格值添加到新电子表格名称的末尾

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

本文关键字:电子表格 添加 工作 单元格 复制      更新时间:2023-09-26

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

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); 

我将转到谷歌的新表单,并且在这个功能上遇到了问题,这个功能在移动之前运行良好:

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
}

第一部分将工作表的一部分复制到另一个现有的电子表格中,该部分功能正常工作。第二部分复制整个工作表,使用复制的工作表名称和数据创建一个新文件,并使用位于源工作表上的单元格中的文本(日期)附加文件名的末尾。它应该先将其移动到根文件夹,然后再移动到另一个名为"时间表档案"的文件夹。

我没有收到任何错误,该文件既没有出现在根文件夹中,也没有出现在"时间表存档"文件夹中。

您正在使用:

DriveApp.getFoldersByName('Timesheet Archive');

这得到了一个";文件夹迭代器";

您需要使用:

getFolderById(id)

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

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

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

https://developers.google.com/apps-script/reference/drive/file#makeCopy(字符串,文件夹)

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