【前編】GPT×GASで実現!Googleスライド月次レポート自動生成の仕組みと導入手順

毎月のWeb解析レポート、手作業でグラフや表を一枚一枚スライドにコピペする作業、地味にしんどくないですか?
しかも、コピペミス防止の数値チェックも、もちろん一つ一つしないといけませんから、本当に肩と首が凝るんですよね…(私も経験者です)

今は LookerStudio があるおかげで、ダッシュボードは自動化されましたが、「分析コメント」や「今後の課題」のついたレポートをドキュメントとして蓄積したいというお客様のニーズは今も多く、レポート担当者の皆さんのご苦労は未だ絶えることはないようです。


もし、GPTが図表や文章を書けるなら、そしてそのままレポートにしてくれたら最高やん?──
ということで、GPT+GASで「月次レポートを自動生成する仕組み」作りを進めることにしました。

この記事では、その前編として「Googleスライドを使った自動生成」までの流れをご紹介します。


サイトウ
サイトウ

もちろん、分析コメントや「今後の課題」については、お客様の背景や目的といった部分も考慮する必要があるので、ある程度のリライトは必要ですが、数字からロジカルにわかる傾向については、十分に価値のあるコメントを出してくれます

1. なぜ自動化したかったのか?

月初になると毎月やってくるこの作業:

  • GA4/GSCからデータをエクスポート
  • チャネル別、ページ別、クエリ別にグラフ作成
  • PDF用にスライドに図表をコピペ

……これって、全部、定型作業なんですよね。

手を抜けないわりに時間もかかるし、作業後のチェックも大変!
「これはGPTとGASを使って自動化する価値があるのでは?」と考えたのがきっかけでした。

2. レポート自動生成の全体構成

前編のスコープは以下の通り:

  • GPT側の役割
    • スライド用のパーツ(表紙テキスト・測定期間)を生成
    • スライド用の本文の草案(要約・所感・今後の課題)を生成
    • スライド用のグラフと表を生成
    • 上記の各パーツをまとめて、スライド自動生成用のGASスクリプトを作成
  • GAS側の役割
    • Googleスライドのテンプレートを複製
    • テキスト変数を置換
    • グラフ画像(Drive経由)を貼り付け
    • GA4/GSCの表を挿入
  • 今回、人間(私)がやったこと:
    • 【初回のみ】Googleシートでテンプレートを作る(下図)
    • 【初回のみ】テンプレート用Googleシートの共有設定を「リンクを知っている全員」にする
    • 【初回のみ】テンプレート用GoogleシートのURLをGPTに渡す
    • GA4、GSC(サーチコンソール)のCSVデータをGPTに渡す
    • GPTが作成したグラフ(PNG画像)をGoogleドライブにアップして共有設定を「リンクを知っている全員」にする
    • GPTが作成したレポート生成用のGASスクリプトを、テンプレート用のGoogleシートに実装する

今回のレポートの構成は、以下のようにしました:

  1. 表紙(タイトル/期間)
  2. 総括(サマリ:テキスト)
  3. GA4ハイライト(1ヶ月のアクセス概要:テキスト)
  4. GA4日次推移グラフ(グラフ)
  5. GA4月次データシート(表)
  6. GA4分析まとめ(テキスト)
  7. GSCハイライト(1ヶ月のSEO概要:テキスト)
  8. GSC日次推移グラフ(グラフ)
  9. GSC月次データシート(表)
  10. 今後の課題(テキスト)

サイトウ
サイトウ

さすがに『100%完全自動化!』とはいかないようで、GPTが生成したグラフ(PNG画像)をGoogleドライブなどにアップして、URLをGPTに渡す(または自分でGASに書き込む)作業だけは不可避のようです。

3. 実際にやってみた

ステップ1:スライドテンプレと変数スロット

テンプレート用のGoogleスライドに、下記のような変数を差し込んでいきます(下図参照):

{{yearmonth}}:表紙タイトルに差し込む年月(例:2025年3月)
{{period}}:測定期間(例:2025/03/01〜2025/03/31)
{{summary}}:GA4サマリー本文(例:月間セッション数は218件・・・)
{{insight}}:GA4分析まとめ(例:検索流入が増加し、記事が必要なユーザーに・・・)
{{action}}:今後の課題(例:CTRが低い記事のタイトル改善や投稿カテゴリの・・・)

スライド内に埋め込まれた {{summary}}{{yearmonth}} などの変数は、GASの .replaceAllText() によって、それぞれの値に自動的に置き換えられます。
この処理によって、テンプレートスライドの各ページに「月次」「要約」「所感」などの情報が自動で挿入され、ベースとなるレポートスライドが生成されるという流れです。

ステップ2:グラフの自動貼り付け

GA4のチャネル別セッションの日次推移グラフや、GSCのクリック数・CTR日次推移グラフは、下記のような流れで、レポートに自動挿しこみしていきます。

GPTがPython + matplotlibでグラフ(PNG画像)を生成 
▶︎ 私がGoogleドライブにアップロード
▶︎ GPTが作成したGASスクリプトでレポートの任意のページ・位置に自動設置

画像の設置には下記のようなGAS文を使います。
Google Slides API を使って画像を挿入する際は、画像の縦横比が自動で保持されるため、横幅だけを指定すれば、縦のサイズもバランスよく調整されて、歪まずにスライドに配置されます。

const image = slide.insertImage(imageUrl);
image.setWidth(500); // 横幅
image.setTop(135);   // 縦位置
image.setLeft(50);   // 横位置

ステップ3:表の自動挿入

GA4のLP別パフォーマンス表(10件+合計)と、GSCのクエリ×LPパフォーマンス(同様に10件+合計)もスライド内に挿入してみました。

ただし、GASでは以下の制限がありました:

  • フォントサイズは制御可(.setFontSize()
  • 列幅・セル余白は制御不可
  • セルが空欄だと .getText() でエラーになる

今回は回避策として:

  • ドメイン部を除いたURL表示(/chatgpt_trouble_faq/
  • 行数制限(上位10件+合計)
  • 空欄を "-" で補完

など試みましたが、下記のサンプルをご覧頂ければわかるように、まだページからはみ出しています。
実際には上位20〜25件は欲しいところなので、Pythonで表を作ってPNG画像化する必要がありそうです。(後半の課題ですね・・・)

4. 仕上がったレポートはこちら

テンプレから自動生成したレポートはこちらで公開中です:

5. 前編のまとめ

  • スライド生成はGPT+GASの組み合わせでかなり実用的にできそう!
  • グラフの画像差し込みも問題なし
  • 表はGASやGoogleスライドの仕様の限界があるため、Pythonなどによる図形化が必要
  • 今はGPTが作成したGASを手作業でコピペしているが、できればAPIでGASに自動取得させたい!
  • とはいえ、月次レポートの自動化の「骨組み」作りまでは成功!

6. 次回予告(後編)

次は、いよいよAPI連携でデータ取得から全自動に挑戦します。

  • Pythonによる表のデザイン調整と図形化
  • APIでGA4とGSCのデータを抽出
  • GPTに所感やアクション案まで出力させる

など、さらなるオートメーション化の実験へ進みます!(人力も多少は必要ですが)

「月次レポート自動化したいかも…」と思った方は
次回の後編記事もぜひお楽しみに!GPT+Python+GASでGoogleスライドの月次レポートを自動生成してみた【後編】