IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

[Google Docs] Importer des données depuis Sheets dans Docs


Sujet :

APIs Google

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [Google Docs] Importer des données depuis Sheets dans Docs
    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.

  2. #2
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    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 :
    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(); }
    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
    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 ); } }
    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
      // 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());
      } }
    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/

    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 !
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

Discussions similaires

  1. Importer des données depuis CSV dans datatable
    Par stoner2008 dans le forum JSF
    Réponses: 2
    Dernier message: 25/07/2013, 11h28
  2. Importer des données depuis des fichiers csv dans MySQL
    Par nrpfc dans le forum SQL Procédural
    Réponses: 24
    Dernier message: 09/10/2012, 16h53
  3. Réponses: 0
    Dernier message: 13/08/2012, 18h25
  4. Importer des données format CSV dans BBD MySQL
    Par Taz_8626 dans le forum Administration
    Réponses: 1
    Dernier message: 04/04/2006, 14h16
  5. Importer des données de Excel dans pages .ASP
    Par sperron dans le forum ASP
    Réponses: 8
    Dernier message: 24/03/2006, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo