Bonjour,
Est-il possible d'importer des données de Google Sheets vers Google Docs (simple affichage d'une cellule), si oui pouvez-vous me dire comment ?
D'avance merci.
Julien.
Bonjour,
Est-il possible d'importer des données de Google Sheets vers Google Docs (simple affichage d'une cellule), si oui pouvez-vous me dire comment ?
D'avance merci.
Julien.
Bonjour,
Oui, c'est possible. Il existe peut-être d'autres façons de faire plus simples mais voici les grandes lignes pour procéder via un Google script :
1) Associer un script à la spreadsheet (dans "Outils" puis "Editeur de scripts") ou au doc
2) Ecrire une fonction capable de lire la donnée souhaitée. Il est nécessaire d'accéder au spreadsheet par son Id, puis à la feuille/onglet contenant la donnée, définir son emplacement et lire la valeur. Par ex :
3) Écrire une fonction capable d'injecter des données à un emplacement précis dans le doc. Il faut récupérer le doc par son Id, mais la difficulté réside surtout sur la façon de se positionner dans le document pour insérer au bon endroit. Pour ma part, j'exploite les "bookmarks" ("signets" en français) car il est possible de les positionner dans le document en leur appliquant une mise en forme de façon à ce que les données insérées soient à l'emplacement attendu avec la bonne taille et style de police. Par ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function lireData() { // Récupération des données de référence : ouverture des feuilles var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID_); var sheet = spreadsheet.getSheetByName(SHEET_NAME_); return sheet.getRange(ROW, COL).getValue(); }
Attention : Après ajout des bookmarks dans le document, il est nécessaire de déterminer leurs identifiants pour les exploiter. Cela peut être fait à l'aide de la méthode "getBookmarks",et par exemple en les écrivant dans la log de façon à savoir quel Id correspond à quelle ligne. Il pourra alors être utile d'écrire un petite fonction "support" permettant cela, par ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function editDoc() { var template = DriveApp.getFileById(DOC_ID_); var dataToInsert = lireData(); // Identification du bookmark d'après son ID var bookMarkTemp = template.getBookmark(BOOKMARK_ID_); // ATTENTION : les bookmarks apparaissent parfois comme des PARAGRAPH et parfois comme des éléments TEXT // Concaténation de la valeur au texte de présentation déjà présent sur le modèle var containerElement = bookMarkTemp.getPosition().getElement(); if (containerElement.getType() == DocumentApp.ElementType.PARAGRAPH && dataToInsert != '') { containerElement.asParagraph().appendText(dataToInsert ); } else if (containerElement.getType() == DocumentApp.ElementType.TEXT && dataToInsert != '') { containerElement.asText().appendText(dataToInsert ); } }
Enfin, il restera à déclencher cette dernière fonction lorsque nécessaire. Il existe un certain nombre de triggers, à voir si cela correspond ou s'il faut se creuser un peu plus la tête : https://developers.google.com/apps-s...ides/triggers/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // L'ensemble des bookmark est parcourus pour tracer dans les logs chaque ID avec le texte qui l'accompagne function pourDev_ListeBookmark() { var template = DriveApp.getFileById(DOC_ID_); var bookMarks = template.getBookmarks(); for(var indiceBM = 0; indiceBM < bookMarks.length; indiceBM++) { Logger.log(bookMarks[indiceBM].getId() + ' : ' + bookMarks[indiceBM].getPosition().getElement().asText().getText()); } }
Ce n'est pas forcément simple alors si ces éléments ne permettent pas d'obtenir le résultat souhaité, il ne faut pas hésiter à préciser ce qui a été fait et les problèmes rencontrés.
Bon courage !
Partager