概要
少し前のアップデートでGoogleスライドにスクリプトエディタが追加されていることに気づきました。その後のアップデートでスライドを操作するためのClass SlidesAppが追加されていることに気づきました。これまではGoogle Slides APIを使用していましたが、今後はSpreadsheetAppやDocumentAppと同様に、SlidesAppを使用することができるようです。
細かい部分まで操作できるようになっていますので試してみると楽しいです。ここではSlidesAppが加わって初めてできるようになった2つの例をご紹介させていただきます。個人的にはまずこの2点が有難いと思いました。
1. サイドバーの設置
SlidesApp.getUi()
もありますので、下記のようにサイドバーも設置することができるようになりました。
function showSidebar() {
var html = HtmlService
.createHtmlOutput('Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />')
.setTitle('My custom sidebar')
.setWidth(300);
SlidesApp.getUi().showSidebar(html);
}
2. 既存スライドの一部のページを新規スライドファイルへコピー
これまではできなかった既存スライドのコピーもできるようになりました。いろいろ探したのですが、スライドのあるページを直接別のスライドへコピーする方法は見当たりませんでした。もっと効率の高い方法があるかもしれませんが、今のところ次のような流れで実現しています。
- DriveAppを使用してスライドファイルそのものをコピーする。
- コピーでできた新たなスライドファイルを開く。
-
remove()
を使用してコピーしたいページ番号以外のページを削除する。
function slideCopy() {
var srcSlides = [1, 3]; // コピーしたいページ番号。この場合サンプルとして1ページ目と3ページ目をコピーしています。
var srcId = SlidesApp.getActivePresentation().getId(); // ファイルIDを直接指定してもOKです。
var dstId = DriveApp.getFileById(srcId).makeCopy().getId();
var dstSlides = SlidesApp.openById(dstId).getSlides();
for (var i in srcSlides) {
dstSlides[srcSlides[i] - 1] = null;
}
var removeSlides = dstSlides.filter(function(e){return e != null});
for (var i in removeSlides) {
removeSlides[i].remove();
}
}
同一スライドファイル内へあるページのスライドをコピーする場合は下記のように簡単に行うことができます。
var slide = SlidesApp.getActivePresentation(); // 0はページ番号1です。
slide.getSlides()[0].duplicate(); // 0はページ番号1です。これは1ページ目をコピーしています。