作成した資料の最終的な体裁チェックをしてくれるスクリプトがあれば良いなと思い、この記事から数回に分けて、使えるスクリプトを作ってみようと思います。
その第一段階として、まずはフォントを整える処理を作成してみます。
やりたいこと
例えば以下のような各ページでフォントが異なる資料があったときに、




スクリプトを実行して全てのテキストフォントを最終的に特定のフォントに統一したい。
↓実行後イメージ




仕様
仕様としては、以下のような要素を含めて作成していこうと思います。次から作成方法です。
・対象スライド内の全てのテキストのフォントが特定のフォントであるかを確認する
・確認後、指定のフォントでない箇所がいくつ存在したかと何ページのどのテキストが対象かを表示する
・ボタン押下のアクションにて、指定のフォントに一括変換を行う
・意図的にフォントを変えていることも考慮し、チェック内容の確認後に一括変換せず処理自体を終了することもできる
ちなみに、今回の例での特定のフォントとしては「M PLUSフォント」を採用しました。
参考:https://ppt.design4u.jp/how-to-choose-the-best-fonts-for-google-slides-2022/
作成方法
①スクリプト起動
作成した資料のメニューからツール>スクリプトエディタを押下する

②コード記入
コンソール内に以下コードを記述する。
function fontCheck() {
//アクティブなプレセンテーションシートを取得する
const Presentation = SlidesApp.getActivePresentation();
//各スライドのタイトルを取得する
const slides = Presentation.getSlides();
//変更するフォントを設定する(今回は「M PLUS 1p」)
const font = 'M PLUS 1p'; //★★必要に応じて変更する
// 対象テキストのページ、テキスト内容を格納する配列を設定
var pageInfo = [];
var textInfo = [];
// 対象のテキストが存在するかのチェック処理
// ループ処理でページごとの処理を行う
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 currentfont = shape.getText().getTextStyle().getFontFamily();
//現フォント情報が「M PLUS 1p」でない場合はその情報を配列に格納する
if (currentfont!=font){
pageInfo.push((i+1) + 'ページ目');
textInfo.push(shape.getText().asString());
}
}
}
// チェック結果表示処理
// テキストを用意
const text = '指定のフォントではない箇所が'+ pageInfo.length +'箇所ありました。修正しますか?';
// 対象テキスト情報をまとめる配列を用意
var modifyInfo = [];
// 対象テキスト分のページ数とテキスト内容を配列に格納
for (let i = 0; i < pageInfo.length; ++i) {
modifyInfo.push(pageInfo[i] + ' ' + textInfo[i]);
}
// チェック結果のメッセージを出力
const ui = SlidesApp.getUi();
var result = ui.alert(text, modifyInfo.join('') , ui.ButtonSet.YES_NO);
// チェック結果のメッセージで「はい」を押下した際の条件分岐
if(result == "YES"){
// フォント修正の処理
// ループ処理でページごとの処理を行う
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];
// 現フォント情報が「M PLUS 1p」でない場合はフォントを変更する
if (currentfont!=font){
shape.getText().getTextStyle().setFontFamily(font);
}
}
}
// 修正完了のメッセージを表示する
ui.alert("修正が完了しました。",ui.ButtonSet.OK);
}
}

※コメントアウトにて処理概要を記載しているため、コード内の解説は割愛いたします。
③実行
実行ボタンを押下する。

④チェック結果をポップアップで確認する
チェック結果が表示され、指定のフォントではない箇所を確認できる。
指定フォントに変更して良い場合は「はい」を押下する。(変更なしの場合は「いいえ)

⑤修正完了をポップアップで確認する
修正が完了した旨を確認し、「OK」を押下すると、テキストフォントが指定のフォントに変更されている。

↓変更後


終わりに
ひとまずフォントチェックと修正を行うスクリプトは作成できました。
ここからさらにフォントサイズとか位置とかもチェックできるようなスクリプトにしていこうと思います。
読んでいただきありがとうございました!
コメント