みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。
前回の記事はこちら!
スプレッドシートのデータをもとにスライド内の文字列を置換するスクリプトを紹介しました。
さて、多くの場合は、テンプレートのプレゼンテーションのコピーを作成してから、置換をほどこしていくはずですね。
ということで、今回はGASでGoogleスライドのプレゼンテーションをコピーする方法をお伝えしていきます。
では、行ってみましょう!
プレゼンテーションのコピーの方法は
さて、スプレッドシートにはSpreadsheetクラスにcopyメソッドがあるのですが、プレゼンテーションのコピーについては、そのものずばりのメソッドがありません。
これはプレゼンテーションだけでなく、ドキュメントもそうですし、他のサービスの多くもそうです。
copyメソッドが用意されているSpreadSheetサービスだけが特別のようですね…
それで、どうすればよいかというと、Driveサービスの機能をお借りすることで実現することができます。
Driveサービスを使ったファイルコピー
ドライブのファイルをコピーする
Drive内のファイルは、Fileオブジェクトとして操作できます。
Slidesサービスから見たらPresentationオブジェクトなのですが、Driveサービスから見たらそれはFileオブジェクトなのです。
ということで、ファイルをコピーするには、FileオブジェクトのmakeCopyメソッドを使えばOKです。
ファイル名にはコピーのファイル名を指定します。省略すると、「~のコピー」というファイル名になります。
ファイルIDを使ってFileオブジェクトを取得する
そのmakeCopyメソッドを使うには、そもそもコピー元となるファイルをFileオブジェクトとして取得する必要があります。
そのために、DriveAppクラスのgetFileByIdメソッドを使うことができます。
ファイルIDでファイルをFileオブジェクトとして取得するわけです。
今回はプレゼンテーションですが、URLの以下{ファイルID}の文字列が該当しています。
このIDはSlidesサービスから見たら、プレゼンテーションIDであり、Driveサービスから見たら、ファイルIDになるわけです。
プレゼンテーションをコピーするスクリプト
では、プレゼンテーションをコピーするスクリプトについて見ていきましょう。
こちらです。
function copyTemplate(){ var sourceFileId ='*****テンプレート用プレゼンテーションのID*****'; copyPresentation_(sourceFileId); } function copyPresentation_(sourceFileId) { var sourceFile = DriveApp.getFileById(sourceFileId); var newFile = sourceFile.makeCopy(); }
関数copyTemplateが実行用の関数で、こちらを実行すると、sourceFileIdを引数として関数copyPresentation_を呼び出し、コピーが実行されます。
実行すると、数秒ほどかかります(プレゼンテーションのコピーは時間がかかるかもですね)。
ドライブを確認すると以下のようにテンプレートのコピーができていることが確認できます。
まとめ
以上、GASでGoogleスライドのプレゼンテーションをコピーする方法をお伝えしました。
copyメソッドほしいですけどね…まあ、しかたなしです。
Driveサービスのちからを借りて、makeCopyメソッドを使いましょう。
次回は、作成したプレゼンテーションを戻り値として返す方法です。
どうぞお楽しみに!
連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成
定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!- GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
- GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
- GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
- GASでGoogleスライドのテキストボックスや図形などを取得する方法
- GASでGoogleスライドのテキストボックスの文字列を取得する方法
- GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
- GASでGoogleスライドのシェイプのテキストを置換する方法
- GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換する
- GASでGoogleスライドのプレゼンテーションをコピーする方法
- GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法