现在创建副本并将文本添加到文件名的末尾。新文件与原始文件位于同一目录中。我似乎无法将新文件移至" 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
}
第一部分将工作表的一部分复制到另一个现有的电子表格,这部分功能正常工作。第二部分复制整个工作表,使用此复制的工作表名称和数据创建一个新文件,并使用位于源工作表上的单元格中的文本(日期)追加文件名的末尾。它应首先将其移动到根文件夹,然后再移动到标题为" Timesheet Archive"的另一个文件夹。
我没有收到任何错误,文件没有出现在根文件夹中,也没有出现在" Timesheet Archive"夹。
答案 0 :(得分:1)
您正在使用:
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(String,Folder)
使用您的folder
变量,即文件夹类型作为目标。