Jak vložit obrázky podle data vytvoření s google apps script?

0

Otázka

Hledám inesrt obrazové soubory do google snímky podle data, kdy byly vytvořeny. Mám následující kód, který sequentually vloží obrázky do googlu snímky z disku složky:

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

}

Chtěl bych změnit to tak, že obrázky jsou přidány podle data, kdy byly vytvořeny (buď nejnovější nebo nejstarší). Jakákoliv pomoc bude velmi ocenil. Díky.

2

Nejlepší odpověď

2

Věřím, že vaším úkolem je následující.

  • Chcete-li načíst soubory obrázků z konkrétní složky.
  • Chcete dát načíst obrázky do Google Snímky v pořadí data vytvoření souboru.
  • Chcete k dosažení tohoto cíle pomocí Google Apps Script.

V tomto případě, jak se o následující změny?

Když metoda "Soubory: seznam" v Disk API je používán, seznam souborů, které mohou být vyvolány v pořadí podle data vytvoření. To se používá pro modifikaci.

Upravený skript:

Předtím, než můžete použít tento skript, prosím, povolit Disk API na Pokročilé služby 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);
  });
}
  • Když tento skript je spuštěn, soubor seznam je získán z konkrétní složky v pořadí podle data vytvoření souboru. V tomto případě, orderBy: "createdDate asc" je používán. To znamená, že na 1. obrázku je nejstarší obraz. Pokud chcete použít příkaz, že 1 obrázek je nejnovější obrázek, prosím upravit orderBy: "createdDate desc".

Odkazy:

2021-11-24 00:26:31

Díky za odpověď Tanaike, to dělá přesně to, co chci.
sp2

@sp2 Děkuji za odpověď a testování. Jsem rád, že váš problém byl vyřešen. Děkuji, taky.
Tanaike

Ahoj Tanaike, jsem našel výše uvedený kód není schopen nahrát soubory ze sdílené google drive (kód dává žádná chyba, prostě to nenačte nic). Mohu jen načíst obrázky z mé osobní drive - by máte nějakou představu, co se to tady děje?
sp2

@sp2 O vaši doplňující otázku, v tomto případě, prosím upravit var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)"}).items; k 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;. Tím, že soubory ve sdílené Jednotky mohou být vyvolány.
Tanaike

Díky Tanaike, to funguje. Snažil jsem se upravit orderBy parametr třídit soubory podle pořadí 'name' a 'name_natural' atd. jako obrys tady, ale je to chyba. Proč ne orderBy přijmout tyto parametry, tímto způsobem?
sp2

@sp2 Děkuji za odpověď. Jsem rád, že vaše 2. otázka byla vyřešena. O 3 nové otázku, rád bych vás podpořit. Ale musím se omluvit za mou špatnou angličtinu dovednosti. Bohužel, nemohu to pochopit. Jsem hluboce omluvit, že jsem nemůže vyřešit všechny vaše otázky. To je vzhledem k mé špatné angličtině dovednost. Jsem hluboce omluvit za to znovu. Můžu se zeptat na detail a vaše 3 otázky?
Tanaike

Ahoj Tanaike, že je naprosto pochopitelné, není třeba se omlouvat. V podstatě jsem se ptal, jak mohu přidat obrázky v abecedním pořadí? Chtěl jsem použít orderBy : name nebo orderBy : name_natural v kódu místo orderBy : createdDate, jak je uvedeno v odkazu, jsem sdílel, ale to nefunguje, jen mě zajímalo proč.
sp2

@sp2 Děkuji za odpověď. Omlouvám se za mou špatnou angličtinu dovednosti znovu. I když si nejsem jistý, zda bych mohl správně pochopit vaši 2. otázku, například, ve své odpovědi, když se seznam souborů, které jsou vyvolány v pořadí createdDateKdysi jsem createdDate asc jako hodnotu. A v tomto případě, když se chcete seřadit seznam souborů podle názvu souboru, jak se o použití orderBy: "title asc"? Pokud to není přímé řešení vaší otázku 2., ještě jednou se omlouvám.
Tanaike
1

Pokud je chcete v určitém pořadí, jen trochu před přidáním.

2021-11-23 23:55:56

Díky za sdílení, že odkaz
sp2

V jiných jazycích

Tato stránka je v jiných jazycích

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