Aide conversion fichier Google Slide en image


#1

Je me suis fait un petit tableur me permettant d’obtenir des liens pour convertir facilement des fichiers Google Documents ou bien simplement obtenir des lien de téléchargement à mettre sur des sites ou autres.

Voilà le tableur

Je n’arrive pas à savoir comment introduire les variables pour obtenir le lien en image de plusieurs diapos d’un Google Slide.
En partant de

J’arrive à avoir les lien de dl de la diapo 1
https://docs.google.com/presentation/d/1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E/export/png mais pas des diapos suivantes.

Lien direct des diapos
Diapo 1
https://docs.google.com/presentation/d/1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E/edit#slide=id.p
Diapo 2
https://docs.google.com/presentation/d/1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E/edit#slide=id.g4a82883759_0_5

Si quelqu’un a une idée de comment ajouter les variables de numéro de diapo dans l’url de téléchargement ça serait super !!


#2

Vite fait comme ça…


Il semblerait que cela se fasse en ajoutant un module complémentaire
En espérant que cela t’aide…


#3

Ah je connais # Doc Variables c’est un module pour créer des fichiers Slides à la volé. Bien quand on a besoin de bien identifier les paramètres sur un fichier modèle.

Il y a d’ailleurs la même chose pour Google Docs

Ceci étant ce n’est pas vraiment ça que je désire faire. J’aimerai obtenir des permalinks qui permettraient par exemple d’afficher des images dynamique des directement en dl ou sur des médias tel que des forums ou des sites internet.

Comme ça par Exemple :

Si je change des paramètres dans mon slide c’est directement répercuté dans l’image affichée.

En tout cas merci de ton aide !!


#4

Comme ça ?

https://docs.google.com/presentation/d/1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E/export/png?id=1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E&pageid=g4a82883759_0_5

#5

Merci mike ! Tu roxxes !


#6

On est bien d’accord qu’on ne peut pas récupérer automatiquement la pageid. Via un script sous Google Sheet par exemple ? Un truc on truc rentre l’id du document et ça te sort les lien avec la pageid ?


#7

Si, ce script ajoute un menu qui ajoute dans le tableur courant une ligne par slide avec son identifiant :

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActive();
  var menuItems = [
    {name: 'Charger les slides', functionName: 'loadSlides_'}
  ];
  spreadsheet.addMenu('Super Menu', menuItems);
}

function loadSlides_() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  
  var presentation = SlidesApp.openById('1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E');
  // ou : var presentation = SlidesApp.openByUrl('https://docs.google.com/presentation/d/1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E/edit#slide=id.p');
  var slides = presentation.getSlides()
  
  slides.forEach(function(slide) {
    var slideId = slide.getObjectId()
    sheet.appendRow([slideId]);
  })
}

Introduction sur laquelle je me suis basé pour créer le script et qui explique comment le créer :
https://developers.google.com/apps-script/quickstart/custom-functions

Et la doc des objets concernés :


#8

Génial :+1:
Merci !!

  var presentation = SlidesApp.openById('1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E');

Comment je fais pour spécifier au script que l’id du slide est dans une cellule spécifique du tableur ?


#9

Tu dois pouvoir utiliser sheet.getRange(1,1).getValue() pour lire la première cellule. Voir la doc de Sheet et Range.

Ou stackoverflow :


#10

Je ne comprends pas trop comment l’intégrer dans le script… Nul je suis ^^


#11

Pas eu le temps de regarder comment modifier le script.
Pour l’instant j’ai ça :



#12

Pour l’intégrer dans le script tu peux par exemple remplacer cette ligne :

var presentation = SlidesApp.openById('1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E');

par :

var presentation = SlidesApp.openById(sheet.getRange(1,1).getValue());

ou par :

var presentationId = sheet.getRange(1,1).getValue();
var presentation = SlidesApp.openById(presentationId);

#13

Top !!

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActive();
  var menuItems = [
    {name: 'Charger les slides', functionName: 'loadSlides_'}
  ];
  spreadsheet.addMenu('Récupérer liens image Slides', menuItems);
}

function loadSlides_() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  
 var presentationId = sheet.getRange(2,1).getValue();
var presentation = SlidesApp.openById(presentationId);
  // ou : var presentation = SlidesApp.openByUrl('https://docs.google.com/presentation/d/1glsGPoKyeTnKg5laSukgXrPMvtdhZVYuwoey3Vhsk0E/edit#slide=id.p');
  var slides = presentation.getSlides()
  
  slides.forEach(function(slide) {
    var slideId = slide.getObjectId()
    sheet.appendRow([slideId]);
  })
}

J’ai mis 2,1 (ligne 2 colonne 1 ?) mais ça ne marche plus :frowning:


#14

C’est parce que t’as appliqué un style à toutes les cellules, donc l’ajout se fait tout en bas du document.

Tu peux changer pour mettre le résultat dans des cellules spécifiques au lieu d’ajouter des lignes :

function loadSlides_() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  
  var presentationId = sheet.getRange(2, 1).getValue();
  var presentation = SlidesApp.openById(presentationId);
  var slides = presentation.getSlides()

  sheet.getRange(3, 1, sheet.getLastRow() - 2).setValue("");
  
  slides.forEach(function(slide, index) {
    var slideId = slide.getObjectId();
    sheet.getRange(3 + index, 1).setValue(slideId);
  })
}

#15

Roxxor !!