如何使用 google 应用程序脚本根据创建日期插入图像?

How to insert images according to creation date with google apps script?

我希望根据创建日期将图像文件插入 google 幻灯片中。我有以下代码,依次 将图像从驱动器文件夹插入 googles 幻灯片:

function makeSlides() {
  
  var presentation = SlidesApp.openById(slideID);
  var folder = DriveApp.getFolderById(folderID);
  var contents = folder.getFiles()
  
  var file;
  var i = 1;
  
  while (contents.hasNext()) {
    
    var file = contents.next();
  
    data = file.getId(); 
    
    // insert above image
    
    var image = DriveApp.getFileById(data);
    var slide = presentation.getSlides()[i];
    var image = slide.insertImage(image);
    slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);    
    i++;
 
  }

}

我想更改它,以便按创建日期添加图像(最新的或最旧的)。收到的任何帮助将不胜感激。谢谢

如果您希望它们按特定顺序排列,只需 sort 在添加之前。

我相信你的目标如下。

  • 您想从特定文件夹中检索图像文件。
  • 您想将检索到的图像按照文件创建日期的顺序放入 Google 个幻灯片。
  • 您想使用 Google Apps 脚本实现此目的。

这样的话,下面的修改怎么样?

当使用DriveAPI中的“Files:list”方法时,可以按照创建日期的顺序检索文件列表。这个用于修改。

修改后的脚本:

在您使用此脚本之前,please enable Drive API at Advanced Google services

function makeSlides() {
  var slideID = "###"; // Please set your Google Slides ID.
  var folderID = "###"; // Please set your folder ID.

  var presentation = SlidesApp.openById(slideID);
  var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)"}).items;
  files.forEach(({id}, i) => {
    var image = DriveApp.getFileById(id);
    var slide = presentation.getSlides()[i];
    var image = slide.insertImage(image);
    slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  });
}
  • 当此脚本为运行时,文件列表按照文件创建日期的顺序从特定文件夹中检索。在这种情况下,使用 orderBy: "createdDate asc"。这意味着第一个图像是最旧的图像。当您想使用第一张图片为最新图片的顺序时,请修改为orderBy: "createdDate desc".

参考文献: