web-dev-qa-db-ja.com

スプレッドシートからフォーマット済みのGoogleドキュメントを生成します

タイトルにあるように、ドキュメントファイルにエクスポートする必要のあるデータ(主題ごとにグループ化されたQ&A)があります。

sample

上記のように、左側の ソースデータ は、右側の のようにフォーマットする必要があります

無料のソリューションを探しています。 Googleは this を見つけるのを助けてくれました。基本的なJSの経験があるので、少なくともあなたがこのタスクを実現するための正しい道に私を置いてくれたらとても嬉しいです(ただし、GSでスクリプトを作成したことはありません)。

Edit.1:

ほぼすべての目的でGoogleを使用している限り、時間の節約になるため、実際にGoogle Appsでスクリプトを作成する方法を学び始めました。

最後に、ここに完全なコードを投稿して、私のような初心者を支援します。

今のところ、私はこれらの点で立ち往生しています:

  1. タイトルを追加し、そのスタイル(フォント、色、配置)をカスタマイズしようとしていますが、期待どおりに機能しません(すべてではありません)。さらに、その順序が重要であるように見えます:-/

    次のスニペットは、図の出力を示しています。

    // 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

最後のケースでは、DocumentApp.Attribute.HEADINGが設定されていない場合にのみ、他のスタイルが考慮されることに注意してください。なぜだろうか。

  1. 追加されたテキストごとにフォントCOMIC_SANS_MSを設定する代わりに、新しく作成されたドキュメントに(他の属性の中でも)デフォルトのフォントを設定する方法はありますか?

    次のコードは何も変更しません。

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

Google DocumentsとSheetsにはいくつかのアドオンがあり、既にそれを行っています。それらの1つは Autocrat です。

これらのアドオンの一部は、「マージ」モデルで動作します:テンプレートとデータソース。

テンプレートには、可変テキストの書式設定、固定テキスト、プレースホルダーが保持されます。スプレッドシートはデータソースとして使用されますが、マージ機能をトリガーするメニューオプションがある場合があります。

参考文献
アドオンの概要-ドキュメントエディタヘルプ

3
Rubén