通过 APPS 脚本将之前在 Google 云端硬盘文件夹中创建的最后一个文件发送到电子表格(Google 表格)

问题描述 投票:0回答:1

我有一个名为“文件夹 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);
}`
javascript google-apps-script google-drive-api javascript-objects
1个回答
0
投票

我同时解决了这个问题,我会把它留给可能和我有同样问题的人。

这是我上述问题的工作代码。

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()]);
}
© www.soinside.com 2019 - 2024. All rights reserved.