我有一个名为“文件夹 A”的文件夹,其中包含每月添加的 Google 文档文件。
我想在名为“导出”的 Google 电子表格中导出“文件夹 A”中先前最后一个created文件(倒数第二个文件created)。在电子表格“导出”中,我需要倒数第二个文件的name和创建的date。
我该怎么做?我想通过 Apps Script 来实现它。
非常感谢!
我尝试使用我已经使用过的代码,基本上是检索父文件夹中最后创建的子文件夹中的文件,但在撰写本文时我无法理解如何对文件执行此操作,因此我需要一些帮助。
`function getMyFilesFromDrive() {
var parentid = "1zDS4MidTalTBxxxxxxxxxx";
var parent = DriveApp.getFolderById(parentid);
var parentfolder= parent.getFolders();
var array=[];
var arrayFolders=[];
while (parentfolder.hasNext()) {
var folders = parentfolder.next();
array.push(folders.getDateCreated());
arrayFolders.push(folders.getId());
}
var date=array.reduce(function (a, b, c) {
return a > b < c ? a : b;
});
var index=array.indexOf(date);
var newestFolder=DriveApp.getFolderById(arrayFolders[index]);
var myFiles=newestFolder.getFiles();
var sheet = SpreadsheetApp.getActive().getSheetByName("Exports");
sheet.clear();
var rows = [];
rows.push(["ID", "Name", "Url"]);
while(myFiles.hasNext()) {
var file = myFiles.next();
if(file != null) {
rows.push([file.getId(), file.getName(), file.getUrl()]);
}
}
sheet.getRange(1,1,rows.length,3).setValues(rows);
}`
我同时解决了这个问题,我会把它留给可能和我有同样问题的人。
这是我上述问题的工作代码。
function exportPenultimateFile() {
var folderName = "Folder A";
var sheetName = "Exports";
var folder = DriveApp.getFoldersByName(folderName).next();
var files = folder.getFiles();
var sortedFiles = [];
while (files.hasNext()) {
var file = files.next();
sortedFiles.push(file);
}
sortedFiles.sort(function(a, b) {
return b.getDateCreated() - a.getDateCreated();
});
if (sortedFiles.length < 2) {
return; // Not enough files in the folder
}
var file = sortedFiles[1]; // Second to last file
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
sheet.clear();
sheet.appendRow(["Name", "Date Created"]);
sheet.appendRow([file.getName(), file.getDateCreated()]);
}