Je souhaite incorporer le graphique d'une feuille de calcul Google Documents dans un document Google Documents afin que les modifications apportées à l'original soient reflétées dans la version incorporée. J'ai trouvé un moyen d'intégrer une image statique du graphique, mais je ne parviens pas à la mettre à jour.
Notez que je souhaite uniquement intégrer le graphique lui-même (qui peut être un camembert, un organigramme, etc.), non les autres parties du tableur - y compris ses cellules et ses données - doivent être incluses.
Pour insérer le graphique en tant qu'image, publiez le graphique à partir des feuilles de calcul Google à l'aide du menu déroulant en forme de petite flèche, une fois sélectionné. Dans le menu déroulant, sélectionnez "image" au lieu de "interactif". (Dans l'URL résultante, la valeur du paramètre format
est modifiée.) Utilisez l'URL pour l'insérer en tant qu'image "par URL" dans votre document Google Docs.
L'image référencée par l'URL est mise à jour en fonction de la feuille de calcul, mais malheureusement, Google Docs (actuellement) semble mettre en cache les images insérées dans un document par URL.
Il s'agit maintenant d'une fonctionnalité intégrée à Google Documents: voir Ajouter un graphique à un document .
Les graphiques liés ne sont pas mis à jour automatiquement. À la place, un bouton flottant "Mise à jour" apparaît dans le coin supérieur droit d'un graphique lié lorsque des modifications apportées à la feuille de calcul liée sont détectées. Cliquez sur ce bouton pour mettre à jour le graphique.
Au lieu d'une solution standard, j'ai créé un script Google Apps simplifié pour recharger mon image intégrée à l'ouverture du document.
Ouvrez l'éditeur de script et entrez le code suivant en remplaçant l'URL par votre propre URL de graphique publié:
function open() {
// replace this URL with your published chart URL
var url = "https://docs.google.com/spreadsheets/d/[numbers]/pubchart?oid=[more_numbers]&format=image";
var image = UrlFetchApp.fetch(url);
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var search = body.findElement(DocumentApp.ElementType.INLINE_IMAGE);
var element = search.getElement();
var parent = element.getParent();
var paragraph = parent.asParagraph();
element.removeFromParent();
paragraph.insertInlineImage(0, image);
}
function setupTrigger(){
var doc = DocumentApp.getActiveDocument();
ScriptApp.newTrigger('open').forDocument(doc).onOpen().create();
}
Exécutez la fonction setupTrigger
. La (ré) ouverture du document devrait maintenant "actualiser" automatiquement l'image du graphique: l'image d'origine est supprimée et une nouvelle instance est insérée.
Ce code suppose que le graphique est le premier inline image
du document.