D'un Tableaux de bord Google slides copier uniquement certains slides

Bonjour,

Serait-il possible que vous puissiez m'aider à développer un script à partir d'un google slide !

L'idée serait qu'à partir d'un Google slide (Tableaux de Bord) comportant toutes une base de données de slides, et via une menu:

1- l'utilisateur cliquerait sur le menu

2- le script copierait toutes les slides où se trouve écrit "A exporter" et pas les autres

3- le script créérait une nouvelle présentation à la meme racine du drive et collerait toutes ces slides avec comme mention "A exporter".

Voici le lien du drive id avec accès en écriture:

1VK7gmzjKvTwRmcXcbghGvCFikrE53f5a

Voici le lien sur la présentation Slide qui sert de tableaux de bord:

https://docs.google.com/presentation/d/1LhMRPYSc3JB2QzzzEVpg9sr3KWnqzQBhLzuOGGY_aAQ/edit

Je vous remercie de votre aide

J'ai enfin réussi une première étape qui est d'identifier les slides à exporter, pas facile car le A exporter est enchâssé dans un groupe

function CopieSlidesExporter() {
  var slides = SlidesApp.getActivePresentation().getSlides();
  var list = []
  slides.forEach((s, n) => s.getPageElements().forEach(e => {
    if (e.getPageElementType().toString() == 'GROUP') {
      e.asGroup().getChildren().forEach(elem => {
        if (elem.getPageElementType().toString() == 'SHAPE') {
          if (elem.asShape().getText().asString() == 'A exporter\n') {
            list.push(n+1)
          }
        }
      })
    }
  }))
  console.log(list)
}

reste à faire la copie

voici

function CopieSlidesExporter() {
  var slides = SlidesApp.getActivePresentation().getSlides();
  var list = []
  slides.forEach((s, n) => s.getPageElements().forEach(e => {
    if (e.getPageElementType().toString() == 'GROUP') {
      e.asGroup().getChildren().forEach(elem => {
        if (elem.getPageElementType().toString() == 'SHAPE') {
          if (elem.asShape().getText().asString() == 'A exporter\n') {
            list.push(n)
          }
        }
      })
    }
  }))
  var d = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm");
  var newPresentation = DriveApp.getFileById(SlidesApp.getActivePresentation().getId()).makeCopy().setName('ma copie de TdB du ' + d)
  var p = SlidesApp.openById(newPresentation.getId())
  var dstFolder = DriveApp.getFolderById('1VK7gmzjKvTwRmcXcbghGvCFikrE53f5a');
  DriveApp.getFileById(newPresentation.getId()).moveTo(dstFolder);
  for (var i = p.getSlides().length - 1; i >= 0; i--) { 
    if (list.indexOf(i) == -1) { 
      p.getSlides()[i].remove() }
  }
}

si tu me demandes de supprimer la mention 'A exporter', alors je préfère que tu mettes 'ne pas exporter' sur les autres slides (et adapter le code en conséquence)

Ta solution, une fois de plus, est superbe et me convient très bien.

Encore un grand merci.

mon premier script sous slide, et j'ai un peu galéré

Rechercher des sujets similaires à "tableaux bord google slides copier uniquement certains"