【GAS】Googleスライドのフォントサイズを整えるスクリプトの作成方法

スポンサーリンク
Google Apps Script

Googleスライド自動整形ツールの第二弾です。
前回の記事ではスライド資料のフォント自体を整えるスクリプトを作成しました。

フォントサイズ自体も自動で整形してくれるスクリプトがあればいいなと思い、今回はフォントサイズを整えるスクリプトを作成してみました。

やりたいこと

以下の例のように作成した資料のタイトルと本文のフォントサイズがバラバラな時に、

スクリプトの実行で全て統一できるようなものを作りたい。
↓実行後イメージ

仕様

仕様は以下のような要素を考慮して作成しました。

  • 全てのスライドのテキストに対して、指定のフォントサイズに統一する
  • 資料は提案書・企画書のような資料を考慮し、タイトルと本文でフォントサイズが異なる想定で、2種類のフォントサイズが適用されるようにする
  • タイトルと本文のフォントサイズの使い分けは、現状のフォントサイズが指定フォントサイズのどちらに近いかを判定して判断する(例えばタイトルが28pt、本文が18ptで指定したいとして、現状のフォントサイズが25であればタイトルと判断して28ptに修正するしようとする)

今回の例ではタイトルは28pt、本文は18ptで指定するようにしました。
タイトルと本文の判別要素は少し甘いかもですが、一旦これで作成していきます。
次から具体的な方法です。

方法

①スクリプトを開く

作成した資料のメニューから、ツール>スクリプトエディタを開く。

②以下コードを記入する

コンソール内に以下コードを記入する。

function fontSizeCheck() {
 //アクティブなプレセンテーションシートを取得する
 const Presentation = SlidesApp.getActivePresentation();
 //各スライドのタイトルを取得する
 const slides = Presentation.getSlides();
 //基準とするフォントサイズを設定する(今回はタイトルは28pt、本文は18ptで設定)
 const titlefontSize = 28; //★★必要に応じて変更する
 const bodyfontSize = 18; //★★必要に応じて変更する

 // 対象のテキストが存在するかのチェック処理
 // ループ処理でページごとの処理を行う
 for (var i = 0; i < slides.length; i++){
   // 各ページのテキスト要素の情報を取得する
   var slide = Presentation.getSlides()[i];
   var shapes = slide.getShapes();

   //ループ処理でページ内のテキスト要素ごとの処理を行う
   for (var j = 0; j < shapes.length; j++){
     var shape = slide.getShapes()[j];
     //テキストサイズ情報を取得する
     var currentfontSize = shape.getText().getTextStyle().getFontSize();
     //テキストサイズを設定したタイトルと本文のサイズとの差異を計算し、その絶対値を変数に格納する
     var differenceFromTitle = Math.abs(titlefontSize - currentfontSize);
     var differenceFromBody = Math.abs(bodyfontSize - currentfontSize);

     //タイトルにサイズが近い場合は28pt、本文にサイズが近い場合は18ptにサイズを変更する
     if (differenceFromTitle < differenceFromBody){
       shape.getText().getTextStyle().setFontSize(28);
     }else{
       shape.getText().getTextStyle().setFontSize(18);
     }
   }
  }
}

③実行

上部のメニューから実行を押下する。

これでGoogleスライド上の全てのテキストが28ptか18ptに統一されています。

終わりに

今回は提案書・企画書を想定して、タイトルと本文が綺麗に並んでいるイメージでしたが、これが講演など見せるためのスライドだったりすると、タイトルや本文のプログラム上の判別する要素はもっと考えないといけないかもなと思いました。

また、JavaScriptで数値の絶対値を求める関数(Math.abs())は何気に初見だったので、勉強になりました。
参考:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/abs

あとは、このスクリプトを作成した後に提案書・企画書としての適したフォントサイズを調べたのですが、タイトルのフォントサイズは「24pt」、本文は「16〜18pt」。補足説明用には「8〜9pt」が良さそうらしいです。
参考:https://ppt.design4u.jp/whats-the-best-font-size-for-presentation/

読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました