es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo insertar imágenes según la fecha de creación con Google Apps Script?

Estoy buscando insertar archivos de imagen en Google Slides de acuerdo a la fecha en que fueron creados. Tengo el siguiente código, que inserta secuencialmente imágenes a Google Slides desde una carpeta de Drive:

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 modificarlo para que las imágenes se agreguen por la fecha en que fueron creadas (ya sea la más reciente o la más antigua). Agradecería cualquier ayuda recibida. Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar imágenes a Google Slides según la fecha en que fueron creadas, deberá modificar el código proporcionado para ordenar la matriz contents de archivos por su fecha de creación antes de recorrerlos en un bucle. Aquí hay un ejemplo de implementación:

    function makeSlides() {
      var presentation = SlidesApp.openById(slideID);
      var folder = DriveApp.getFolderById(folderID);
      var contents = folder.getFiles();
    
      // Ordena los archivos por fecha de creación (el más antiguo primero)
      contents = Array.prototype.slice.call(contents).sort(function(a, b) {
        return a.getDateCreated().getTime() - b.getDateCreated().getTime();
      });
    
      var slide;
      while (contents.length > 0) {
        // Obtiene el siguiente archivo de la matriz ordenada
        var file = contents.shift();
        var image = slide.insertImage(file);
        slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);
      }
    }
    

    El método sort() se utiliza para ordenar la matriz contents mediante la comparación de la propiedad dateCreated de cada archivo utilizando el método getTime(). De forma predeterminada, sort() ordena los elementos en orden ascendente, por lo que restamos la dateCreated de b de a para obtener los archivos en orden de más antiguos a más nuevos.

    Dentro del bucle, usamos shift() en lugar de next() para recuperar el siguiente archivo de la matriz contents. Esto elimina el primer elemento de la matriz y lo devuelve, y como ordenamos la matriz por fecha de creación anteriormente, podemos estar seguros de que shift() siempre devolverá el archivo más antiguo que queda.

    Finalmente, insertamos la imagen en la slide actual (que se inicializó fuera del bucle) y agregamos una nueva diapositiva en blanco a presentation para la siguiente imagen. Tenga en cuenta que ya no necesitamos hacer un seguimiento de una variable de índice como i, ya que estamos utilizando shift() para recuperar los archivos en el orden correcto.

Comments are closed.