Cómo insertar imágenes según la fecha de creación con google apps script?

0

Pregunta

Estoy buscando a inesrt archivos de imagen en presentaciones de google de acuerdo a la fecha en que fueron creados. Tengo el siguiente código, que sequentually inserta imágenes de google de diapositivas de una carpeta del disco:

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++;
 
  }

}

Me gustaría alterar de modo que las imágenes agregadas por la fecha en que fueron creados (ya sea más reciente o más antiguo). Cualquier ayuda recibida será muy apreciada. Gracias.

2

Mejor respuesta

2

Yo creo que su objetivo es el siguiente.

  • Si desea recuperar los archivos de imagen de la carpeta específica.
  • Quieres poner la lista de imágenes para presentaciones de Google en el orden de la fecha de creación del archivo.
  • Usted desea conseguir esto utilizando Google Apps Script.

En este caso, ¿la siguiente modificación?

Cuando el método de "Archivos: lista" en la Unidad de la API se utiliza, la lista de archivos pueden ser recuperados en el orden de la fecha de creación. Este se utiliza para la modificación.

Modificado el script:

Antes de utilizar este script, por favor habilite la Unidad de la API en la Avanzada de los servicios de Google.

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);
  });
}
  • Cuando se ejecuta este script, la lista de archivos recuperados de la carpeta específica en el orden de la fecha de creación del archivo. En este caso, orderBy: "createdDate asc" es utilizado. Esto quiere decir que la 1ª imagen es la imagen más antigua. Cuando desee utilizar el fin de que la 1ª imagen es la nueva imagen, por favor modifica a orderBy: "createdDate desc".

Referencias:

2021-11-24 00:26:31

Gracias por tu respuesta Tanaike, esto es exactamente lo que quiero.
sp2

@sp2 Gracias por responder y hacer las pruebas. Me alegro de que tu problema se ha resuelto. Gracias, también.
Tanaike

Hola Tanaike, me estoy dando cuenta que el código anterior no es capaz de cargar archivos de un compartida en google drive (el código da ningún error, simplemente no carga nada). Sólo puedo cargar imágenes desde mi unidad de personal - usted tiene alguna idea de lo que está pasando aquí?
sp2

@sp2 Acerca de su pregunta adicional, en ese caso, por favor, modifique var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)"}).items; a var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)", corpora: "allDrives", includeItemsFromAllDrives: true, supportsAllDrives: true}).items;. Por esto, los archivos en la Unidad compartida puede ser recuperada.
Tanaike

Gracias Tanaike, esto funciona. He estado tratando de modificar la orderBy parámetro para ordenar los archivos por orden 'name' y 'name_natural' etc. tal y como se exponen aquí, pero da un error. ¿Por qué no puede orderBy aceptar estos parámetros en este modo?
sp2

@sp2 Gracias por responder. Me alegro de que tu 2ª pregunta fue resuelto. Acerca de su 3er nueva pregunta, me gustaría apoyar a usted. Pero tengo que pedir disculpas por mi pobre inglés de habilidad. Por desgracia, no puedo entenderlo. Me disculpo profundamente que no puedo resolver todas sus preguntas. Esto es debido a mi pobre inglés de habilidad. Estoy profundamente disculpas por esto de nuevo. ¿Puedo preguntar acerca de los detalles de su 3ª pregunta?
Tanaike

Hola Tanaike, que es perfectamente comprensible, no hay necesidad de pedir disculpas. Básicamente, me estaba preguntando ¿cómo puedo añadir imágenes en orden alfabético? Yo quería usar orderBy : name o orderBy : name_natural en el código en lugar de orderBy : createdDate, como se indica en el enlace que he compartido, pero no funciona, se preguntaba por qué.
sp2

@sp2 Gracias por responder. Me disculpo por mi mala inglés habilidad. Aunque no estoy seguro de si yo podría entender correctamente tu 2ª pregunta, por ejemplo, en mi respuesta, cuando la lista de archivos recuperados en el orden de createdDate, He usado createdDate asc como el valor. Y en este caso, cuando se desea ordenar la lista de archivos por nombre de archivo, cómo sobre el uso de orderBy: "title asc"? Si esta no era la solución directa de tu 2ª pregunta, me disculpo de nuevo.
Tanaike
1

Si usted quiere que ellos en un orden específico acaba de ordenar a ellos antes de añadir.

2021-11-23 23:55:56

Gracias por compartir ese enlace
sp2

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................