web-dev-qa-db-fra.com

Générer un document Google formaté à partir d'une feuille de calcul

Comme le titre l'indique, j'ai des données (Q & A regroupées par sujet) que je dois exporter dans un fichier de document.

sample

Comme indiqué ci-dessus, les données source à gauche doivent être formatés comme l'exemple à droite

Je cherche une solution gratuite. Google m'a aidé à trouver this qui semble déprécié selon les commentaires. Je serai donc très heureux si au moins vous me mettez sur la bonne voie pour réaliser cette tâche, étant donné que j'ai une expérience de base de JS (mais je n'ai jamais écrit de script dans GS).

Edit.1:

J'ai effectivement commencé à apprendre à utiliser des scripts avec Google Apps, car c'est un gain de temps, du moment que j'utilise Google pour presque tout.

À la fin, je posterai le code complet ici pour aider tout débutant comme moi.

Pour l'instant je suis bloqué à ces points:

  1. J'ajoute un titre, puis j'essaie de personnaliser son style (police, couleur, alignement), mais cela ne fonctionne pas comme prévu (pas tout). De plus, il semble que l'ordre compte: - /

    L'extrait suivant donne la sortie dans l'image:

    // Define a style
    var titleStyle1 = {};
    titleStyle1[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.COMIC_SANS_MS;
    titleStyle1[DocumentApp.Attribute.FOREGROUND_COLOR] = '#ff0000'; // Red
    titleStyle1[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
    titleStyle1[DocumentApp.Attribute.HEADING] = DocumentApp.ParagraphHeading.TITLE;
    
    
    var titleStyle2 = {};
    titleStyle2[DocumentApp.Attribute.HEADING] = DocumentApp.ParagraphHeading.TITLE;
    titleStyle2[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.COMIC_SANS_MS;
    titleStyle2[DocumentApp.Attribute.FOREGROUND_COLOR] = '#ff0000'; // Red
    titleStyle2[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
    
    
    var titleStyle3 = {};
    titleStyle3[DocumentApp.Attribute.HEADING] = DocumentApp.ParagraphHeading.TITLE;
    titleStyle3[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
    titleStyle3[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.COMIC_SANS_MS;
    titleStyle3[DocumentApp.Attribute.FOREGROUND_COLOR] = '#ff0000'; // Red
    
    
    var titleStyle4 = {};
    titleStyle4[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.COMIC_SANS_MS;
    titleStyle4[DocumentApp.Attribute.FOREGROUND_COLOR] = '#ff0000'; // Red
    titleStyle4[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
    //titleStyle4[DocumentApp.Attribute.HEADING] = DocumentApp.ParagraphHeading.TITLE;
    
    // Create and open a new document.
    var doc = DocumentApp.create(outputDocDesiredName);
    
    var body = doc.getBody();
    body.setAttributes(docStyle)
    
    // Append a document header paragraph.
    body.appendParagraph('Test title').setAttributes(titleStyle1);
    body.appendParagraph('Test title').setAttributes(titleStyle2);
    body.appendParagraph('Test title').setAttributes(titleStyle3);
    body.appendParagraph('Test title').setAttributes(titleStyle4);
    

enter image description here

Notez que dans le dernier cas, les autres styles sont pris en compte uniquement lorsque DocumentApp.Attribute.HEADING n'est pas défini. Je me demande pourquoi.

  1. Au lieu de définir la police COMIC_SANS_MS à chaque fois pour chaque texte ajouté, existe-t-il un moyen de définir une police par défaut (parmi d'autres attributs) pour le document nouvellement créé?

    Le code suivant ne change rien:

    var docStyle = {};
    docStyle[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.COMIC_SANS_MS;
    
    var body = doc.getBody();
    body.setAttributes(docStyle);
    
4
Enissay

Plusieurs add-ons pour Google Documents et Sheets le font déjà. L'un d'eux est Autocrat .

Certains de ces add-ons fonctionnent sur un modèle de "fusion": un modèle et une source de données.

Le modèle contient la mise en forme, le texte fixe et les espaces réservés pour le texte variable. La feuille de calcul est utilisée comme source de données. Elle contient parfois les options de menu permettant de déclencher la fonction de fusion.

Références
Vue d'ensemble des add-ons - Aide de Éditeurs Docs

3
Rubén