AI駆動開発でGoogleスライドを自動生成!GASとGemini活用術 🚀

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

日々の業務でプレゼンテーション資料を作成する機会は多いですが、その作成には膨大な時間がかかります。特に、定型的な内容の資料を繰り返し作成する場合、その手間は無視できません。本記事では、Google Apps Script (GAS) とGoogleのAIであるGeminiを組み合わせることで、Googleスライドの作成プロセスを自動化し、大幅な時間短縮を実現する方法を解説します。AIを活用した開発(AI駆動開発)により、これまで手作業で行っていたスライド作成の常識を覆しましょう。

Google Apps Script(GAS)とは?

Google Apps Script(GAS)は、Google Workspace(旧G Suite)のサービスを自動化、連携、拡張するためのクラウドベースのスクリプトプラットフォームです。JavaScriptをベースにしており、特別な開発環境を構築することなく、Googleドライブ上で直接コードを記述、実行できます。Gmail、Googleスライド、Googleドキュメント、Googleスプレッドシートなど、様々なGoogleサービスと連携し、ルーティンワークの自動化やカスタム機能の追加が可能です。

GASでできることの例

  • Gmailのメールを自動で振り分ける

  • Googleスプレッドシートのデータを基にグラフを自動生成する

  • Googleフォームの回答を自動で集計し、レポートを作成する

  • Googleカレンダーのイベントを自動で作成する


Geminiとは?

Geminiは、Googleが開発した強力なマルチモーダルAIモデルです。テキスト、画像、音声、動画など、様々な形式の情報を理解し、生成することができます。自然言語処理能力に優れており、人間のような自然な会話や文章生成が可能です。本記事では、このGeminiの文章生成能力を活用し、スライドのコンテンツ案を自動で作成する部分に焦点を当てます。


AI駆動開発によるGoogleスライド自動生成のメリット

AI駆動開発(AI-driven development)とは、AIの能力を最大限に活用し、開発プロセスを効率化、自動化する手法です。Googleスライドの自動生成において、AI駆動開発を取り入れることで以下のようなメリットがあります。

  • 時間と労力の削減: 定型的なスライド作成の手間を大幅に削減し、より創造的な作業に集中できます。

  • 品質の向上: AIが生成するコンテンツは、一貫性があり、誤字脱字のリスクも低減されます。

  • パーソナライズ: 用途に応じてAIがコンテンツを調整することで、個別のニーズに合わせたスライドを効率的に作成できます。

  • 新たなアイデアの創出: AIの提案により、これまで思いつかなかったような新しいスライド構成や表現が生まれる可能性もあります。


Googleスライド自動生成の仕組み

Googleスライドの自動生成は、主に以下のステップで実現します。

  1. プロンプトの設計: どのようなスライドを生成したいか、Geminiに明確に指示するためのプロンプトを作成します。

  2. Geminiによるコンテンツ生成: GASからGemini APIを呼び出し、プロンプトに基づいてスライドのタイトル、内容、箇条書きなどのテキストコンテンツを生成します。

  3. GASによるスライド生成: Geminiが生成したテキストコンテンツを基に、GASがGoogleスライドのAPIを操作して、新しいプレゼンテーションを作成し、スライドを追加していきます。


サンプルコード: GASとGeminiでスライドを自動生成する

ここでは、GASからGemini APIを呼び出し、その結果をGoogleスライドに反映させるための基本的なサンプルコードを紹介します。

事前準備: Gemini APIキーの取得

Gemini APIを利用するには、Google Cloud PlatformでGemini APIを有効にし、APIキーを取得する必要があります。以下の手順でAPIキーを取得してください。

  1. Google Cloud Consoleにアクセスします。

  2. 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。

  3. ナビゲーションメニューから「APIとサービス」>「ライブラリ」を選択します。

  4. 「Gemini API」を検索し、有効にします。

  5. 「認証情報」から「認証情報を作成」>「APIキー」を選択し、APIキーを生成します。

GASスクリプトの作成

GoogleスライドからGASエディタを開きます。「拡張機能」>「Apps Script」を選択します。

JavaScript
 
// スライド自動生成のサンプルコード
function createPresentationWithGemini() {
  const GEMINI_API_KEY = "YOUR_GEMINI_API_KEY"; // 取得したGemini APIキーを設定してください

  // Geminiに送るプロンプト
  const prompt = "「今日の天気」についてのGoogleスライドを作成してください。タイトル、3つの箇条書きのポイント、結論を含めてください。";

  try {
    // Gemini APIにリクエストを送信
    const geminiResponse = callGeminiApi(prompt, GEMINI_API_KEY);
    const generatedContent = geminiResponse.candidates[0].content.parts[0].text;

    // Geminiが生成したコンテンツを解析
    const lines = generatedContent.split('\n');
    let title = "タイトル未定";
    let points = [];
    let conclusion = "結論未定";

    // 簡単なパース処理(Geminiの出力形式に合わせて調整してください)
    if (lines.length > 0) {
      title = lines[0].replace('タイトル: ', '').trim();
      for (let i = 1; i < lines.length; i++) {
        if (lines[i].startsWith('- ')) {
          points.push(lines[i].replace('- ', '').trim());
        } else if (lines[i].startsWith('結論: ')) {
          conclusion = lines[i].replace('結論: ', '').trim();
        }
      }
    }

    // 新しいプレゼンテーションを作成
    const presentation = SlidesApp.create(title);

    // タイトルスライドを追加
    const titleSlide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE);
    titleSlide.getShapes()[0].getText().setText(title);

    // コンテンツスライドを追加
    const contentSlide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
    contentSlide.getShapes()[0].getText().setText("今日の天気概要");
    const body = contentSlide.getShapes()[1].getText();
    points.forEach(point => {
      body.appendParagraph(point);
    });

    // 結論スライドを追加
    const conclusionSlide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
    conclusionSlide.getShapes()[0].getText().setText("まとめ");
    conclusionSlide.getShapes()[1].getText().setText(conclusion);

    Logger.log("プレゼンテーションが作成されました: " + presentation.getUrl());

  } catch (error) {
    Logger.log("エラーが発生しました: " + error.message);
  }
}

// Gemini APIを呼び出す関数
function callGeminiApi(promptText, apiKey) {
  const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
  const headers = {
    'Content-Type': 'application/json',
  };
  const payload = JSON.stringify({
    contents: [
      {
        parts: [
          {
            text: promptText,
          },
        ],
      },
    ],
  });

  const options = {
    method: 'post',
    headers: headers,
    payload: payload,
  };

  const response = UrlFetchApp.fetch(url, options);
  return JSON.parse(response.getContentText());
}

コードの解説

  1. GEMINI_API_KEY の設定: 取得したGemini APIキーをここに設定します。

  2. prompt の定義: Geminiに生成してほしい内容を記述します。ここでは「今日の天気」に関するスライド作成を指示しています。プロンプトは具体的であればあるほど、期待する結果が得られやすくなります。

  3. callGeminiApi 関数:

    • Gemini APIのエンドポイント (generativelanguage.googleapis.com) を指定します。

    • UrlFetchApp.fetch() を使って、Gemini APIにHTTP POSTリクエストを送信します。

    • リクエストのペイロードには、contents 配列にプロンプトテキストを格納します。

    • APIからのレスポンスをJSON形式で解析し、返します。

  4. createPresentationWithGemini 関数:

    • callGeminiApi を呼び出し、Geminiからコンテンツを取得します。

    • Geminiの出力解析: Geminiが生成したテキストを、タイトル、箇条書き、結論に分解します。注意点として、Geminiの出力形式は毎回完全に同じとは限らないため、より堅牢なパース処理が必要になる場合があります。 正規表現などを使うことで、より柔軟なパースが可能です。

    • SlidesApp.create(title) で新しいGoogleプレゼンテーションを作成します。

    • presentation.appendSlide() でスライドを追加し、PredefinedLayout(事前定義されたレイアウト)を指定します。

    • getShapes()[0].getText().setText() などを使って、スライド内のテキストボックスにGeminiが生成した内容を設定します。

実行方法

  1. GASエディタで上記のコードを貼り付けます。

  2. YOUR_GEMINI_API_KEY をご自身のAPIキーに置き換えます。

  3. 関数のドロップダウンから createPresentationWithGemini を選択し、実行ボタンをクリックします。

  4. 初回実行時には、Googleアカウントへのアクセス許可を求められるので、承認します。

  5. スクリプトが正常に実行されると、Googleドライブに新しいプレゼンテーションが作成されます。


より高度な自動生成を目指して

上記のサンプルコードは基本的な機能ですが、さらに高度な自動生成を目指すには以下の点を考慮すると良いでしょう。

1. プロンプトエンジニアリングの深化

Geminiからより精度の高い出力を得るためには、プロンプトエンジニアリングが非常に重要です。

  • 具体的な指示: 「〇〇について」「箇条書きで〇点」「〇文字以内で」など、具体的に指示します。

  • 役割の明確化: 「あなたはプロのプレゼン資料作成者として、」のように、Geminiに役割を与えることで、回答の質を高めることができます。

  • 出力形式の指定: JSON形式や特定のマークダウン形式で出力するように指示することで、GASでのパース処理が容易になります。

  • 例示 (Few-shot prompting): 期待する出力の例をいくつか示すことで、Geminiはそれに沿った形でコンテンツを生成しやすくなります。

2. レイアウトとデザインのカスタマイズ

現状のコードでは基本的なレイアウトしか扱っていませんが、GASのSlidesAppクラスをさらに活用することで、より詳細なデザイン調整が可能です。

  • テキストの書式設定: フォント、サイズ、色、太字、斜体などを設定できます。

  • 画像や図形の挿入: Googleドライブにある画像をスライドに挿入したり、簡単な図形を描画したりできます。

  • スライドマスターの利用: プレゼンテーション全体のデザインテンプレートとなるスライドマスターを活用することで、統一感のあるデザインを自動適用できます。

3. Googleスプレッドシートとの連携

スライドの元データがGoogleスプレッドシートにある場合、GASでスプレッドシートからデータを読み込み、そのデータを基にGeminiにコンテンツ生成を依頼し、スライドに反映させることで、より実用的な自動化が可能になります。

例えば、スプレッドシートの各行を一つのスライドのデータとして扱い、行ごとに異なる内容のスライドを自動生成するといった応用が考えられます。


まとめ

本記事では、Google Apps ScriptとGoogle Geminiを活用し、Googleスライドを自動生成するAI駆動開発の基本的な手法と、そのメリットについて解説しました。AIの力を借りることで、これまで手作業で行っていたプレゼンテーション資料作成の常識が大きく変わり、より効率的で創造的な業務へとシフトすることが可能になります。ぜひ、ご自身の業務にAI駆動開発を取り入れ、生産性向上に役立ててください。

「らくらくPython塾」が切り開く「呪文コーディング」とは?

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<オンライン無料>ゼロから始めるPython爆速講座

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks