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.
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).
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:
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);
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.
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);
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