【Google Slides API】プレゼンテーションファイルをシステム化する方法
2022.01.31
かつてはオフィスソフトといえばMicrosoftのものが主流でした。
しかし近年Googleの提供する無料で使えるオフィスサービスが台頭してきました。
特徴はWEB上で使えること。更に複数人で共有が出来る等、今までのオフィスソフトとはまた違った強みがあります。
今回はその中でもMicrosoftの「PowerPoint」のようなプレゼンテーションを作成出来る「Google Slides」をAPIを使って制御する方法を紹介します。
サンプルコードを利用すればすぐにでも導入する事が出来るでしょう。
Google Slidesとは
Google SlidesとはGoogleが提供しているプレゼンテーションソフトです。
Google Slidesには以下の特徴があります。
- 無料で利用できます。
- Googleアカウントを持っているユーザーとファイルの共有ができます。
- pptx、pdf、jpg等ファイルとしてダウンロード出来ます。
作成されたファイルがGoogleドライブ上に保存される為、近年話題となっているクラウド上で全てが完結します。
ローカルにファイルが必要な場合様々な形式でダウンロード出来る為、そこに問題が出ることも少ないでしょう。
また、Googleドライブ上にファイルが生成される関係上、Google Drive APIを使うことで生成したファイルや保存しているフォルダーをプログラムで操作する事も可能となっています。
Google Slides APIとは
Google Slides APIとはGoogle Slidesをプログラム経由で操作する為の機能になります。
作成したプレゼンテーション内の操作はほぼ何でも出来るようになっています。
Googleが提供しているマニュアルに全ての操作方法が乗っています。
しかし、英語で更にサンプルコードが少ないため最初苦労する場合があります。
Google Slides API のドキュメントは以下になります。
その中でもよく使うページ2つをピックップしています。
「Google Slides API クラス一覧」はAPI内で使われている全てのクラスが記載されています。
「Google Slides API Request」はAPIでの操作を反映する為の種類の一覧が記載されています。
Google Slides API 公式ドキュメント
Google Slides API クラス一覧
Google Slides API Request
Google Slides APIの利用準備
Google Slides APIを利用する為にはGoogle Cloud Platform上プロジェクトを作成し、そのプロジェクトで「Google Slides API」を有効化する必要があります。
その後、APIを利用するシステム(今回はPHPのlaravelを利用しています。)でcomposerを利用してgoogle/apiclientをインストールします。
こちらはGoogleのAPIを利用する為のライブラリとなっています。
インストールコマンドは以下です。
composer require google/apiclient
また、GoogleのAPIを利用する為にはOAuth2.0のアクセストークンかリフレッシュトークンが必要になります。
今回はGoogle OAuth 2.0公式ドキュメントを参照してアクセストークンを準備してください。
その際のスコープは”https://www.googleapis.com/auth/presentations”を設定しておくことでGoogle Slidesの編集が可能となります。
以上でGoogle Slides APIの前準備が完了です。
プレゼンテーション操作のサンプルコード
<?php
use Google_Client;
use Google_Service_Slides;
use Google_Service_Slides_Request;
use Google_Service_Slides_BatchUpdatePresentationRequest;
class GoogleSlides
{
// 前準備で取得したアクセストークン
$access_token = "xxxxxxxxxxxxxxxxxxx";
// 編集したいファイルのID(ブラウザでアクセスした際にURLに記載されているID)
$presentation_id = "xxxxxxxxxxxxxxxxxxxx";
// Google API のクライアントクラス生成
$google_client = new \Google_Client();
$google_client->setScopes(Google_Service_Slides::PRESENTATIONS);
$google_client->setAccessType('offline');
$google_client->setAccessToken($access_token);
// Google Slides APIのサービスクラス生成
$service = new Google_Service_Slides($google_client);
// 対象のIDのプレゼンテーションの内容取得
$presentation = $service->presentations->get($presentation_id);
// プレゼンテーション内のスライドを取得
$slides = $presentation->getSlides();
// 取得したスライドの内容をチェック
foreach ($slides as $slide) {
// スライド内のオブジェクトを取得
$page_elements = $slide->getPageElements();
foreach ($page_elements as $page_element) {
// スライド内のオブジェクトのオブジェクトIDを取得
$object_id = $page_element->objectId;
break;
}
break;
}
// テキスト編集リクエスト作成
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest([
'requests' => [
new Google_Service_Slides_Request([
"insertText" => [
"objectId" => $object_id,
// 挿入文字列
"text" => "編集文字列",
// 文字列挿入位置
"insertionIndex" => 0,
],
]);
]
]);
// 編集リクエスト送信
$service->presentations->batchUpdate($presentationCopyId, $batchUpdateRequest);
}
サンプルコードの解説
このサンプルコードは既に存在するプレゼンテーションファイルの1枚目のスライドにあるテキストボックスに文字列を追加するというプログラムになります。
基本的にGoogle Slides APIはオブジェクトIDに対して変更を指示していきます。
つまり、オブジェクトIDがわかっていれば複雑な処理をせずにピンポイントで変更出来るわけです。
サンプルコードでは対象のオブジェクトIDが分からない為、プレゼンテーションファイル内の全てのスライドの中から1枚目のスライドを選び、全てのオブジェクトの中の1つ目のオブジェクトのIDを取得しています。
この仕組を改造すれば任意のスライドの任意のオブジェクトのIDを取得する事ができます。
今回のサンプルコードではテキストボックスのテキストの編集ですが、Google Slides APIのRequestのマニュアルを確認する事で様々なオブジェクトの変更が可能となっています。
また、プレゼンテーションファイルのコピーをGoogle Drive API で行えます。
その為、以下のような手順のシステムを組む事で整ったプレゼンテーションファイルを作成できます。
- テンプレートとしてプレゼンテーションファイルを作成し、デザインを整える。
- システム動作時にテンプレートをコピーし新しいプレゼンテーションファイルを作成する。
- コピーしたプレゼンテーションファイルに編集を加える。
まとめ
「PowerPoint」はプレゼンテーション以外にも、資料の作成等にも使われています。
しかし、システムで「PowerPoint」を編集するのはなかなか骨が折れました。
今回紹介した「Google Slides API」を利用することで「PowerPoint」と互換のあるプレゼンテーションソフトの「Google Slides」をシステムで生成できます。
毎日手作業で作ってた資料が自動で作成出来るようになるかもしれません。
また、同様にGoogleが提供している表計算ソフトサービスの「Googleスプレットシート」にもAPIがある為機会があれば紹介したいと思います。
関連