Como inserir imagens de acordo com a data de criação com o google apps script?

0

Pergunta

Eu estou olhando para inesrt arquivos de imagem no google slides de acordo com a data em que foram criados. Eu tenho o seguinte código, que sequentually insere imagens para googles slides a partir de uma pasta do 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++;
 
  }

}

Eu gostaria de alterá-lo de modo a que as imagens são adicionadas pela data em que foram criados (ou mais recente ou mais antiga). Qualquer ajuda recebida será muito apreciada. Obrigado.

2

Melhor resposta

2

Eu acredito que seu objetivo é o seguinte.

  • Você deseja recuperar os arquivos de imagem da pasta específica.
  • Você quer colocar imagens recuperadas para o Google Slides, a fim de a data de criação do arquivo.
  • Você quer conseguir isso usando o Google Apps Script.

Neste caso, como a seguinte modificação?

Quando o método de Arquivos: lista" na Unidade de API é usada, a lista de arquivos podem ser recuperados em ordem de data. Este é utilizado para a modificação.

Script modificado:

Antes de utilizar este script, por favor, habilite Unidade API Avançada de serviços do 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);
  });
}
  • Quando este script é executado, a lista de arquivos recuperados da pasta específica, a fim de a data de criação do arquivo. Neste caso, orderBy: "createdDate asc" é usada. Isso significa que a 1ª imagem é a imagem mais antiga. Quando você deseja usar a fim de que a 1ª imagem é a mais nova imagem, por favor, modifique para orderBy: "createdDate desc".

Referências:

2021-11-24 00:26:31

Obrigado pela sua resposta Tanaike, isso faz exatamente o que eu quero.
sp2

@sp2 Obrigado por responder e testá-lo. Eu estou feliz que seu problema foi resolvido. Obrigado, também.
Tanaike

Oi Tanaike, eu estou achando o código acima não é capaz de carregar em arquivos a partir de uma pasta google drive, o código dá nenhum erro, apenas não carregar nada). Eu só pode carregar imagens a partir da minha motivação pessoal - você teria alguma idéia do que está acontecendo aqui?
sp2

@sp2 Sobre a sua questão, nesse caso, por favor, modificar var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)"}).items; para 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 isso, os ficheiros da Unidade de disco compartilhada pode ser recuperado.
Tanaike

Graças Tanaike, isso funciona. Tenho estado a tentar modificar o orderBy parâmetro para classificar os arquivos por ordem 'name' e 'name_natural' etc. como estrutura de tópicos aqui, mas dá um erro. Por que não pode orderBy aceitar esses parâmetros desta forma?
sp2

@sp2 Obrigado por responder. Eu estou feliz a sua 2ª questão foi resolvido. Sobre o seu 3º nova pergunta, eu gostaria de apoiá-lo. Mas eu tenho de pedir desculpas para os meus pobres habilidades de inglês. Infelizmente, eu não posso entender isso. Sinto-me profundamente desculpas que eu não posso resolver o seu todas as perguntas. Isto é devido ao meu pobre habilidades de inglês. Sinto-me profundamente pedir desculpas por isso novamente. Posso perguntar-lhe sobre os detalhes de sua 3ª pergunta?
Tanaike

Oi Tanaike, o que é perfeitamente compreensível, não há necessidade de pedir desculpas. Basicamente, eu estava perguntando como posso adicionar imagens em ordem alfabética? Eu queria usar orderBy : name ou orderBy : name_natural no seu código, em vez de orderBy : createdDate, como descrito no link que eu compartilhada, mas ele não funciona, só estava me perguntando por quê.
sp2

@sp2 Obrigado por responder. Peço desculpas por meu pobre inglês habilidade novamente. Embora eu não tenho certeza se eu poderia entender corretamente o seu 2º pergunta, por exemplo, em minha resposta, quando a lista de arquivos recuperados na ordem de createdDate, Eu usei createdDate asc como o valor. E nesse caso, quando você deseja classificar a lista de ficheiros por nome de arquivo, como sobre o uso de orderBy: "title asc"? Se essa não era a solução direta de sua 2ª pergunta, peço desculpas novamente.
Tanaike
1

Se você quer que eles, em ordem específica, apenas classificar - los antes de adicionar.

2021-11-23 23:55:56

Obrigado por compartilhar esse link
sp2

Em outros idiomas

Esta página está em outros idiomas

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