前回の記事では、Google ドライブにある1つの画像ファイルをスライドに挿入しました。
今回は、フォルダ内の画像ファイルを1ファイル1スライドとして一括挿入するコードを紹介します。
function myFunction() {
var prs = SlidesApp.getActivePresentation();
var fol = DriveApp.getFolderById("(Google ドライブのフォルダID)"); //※フォルダID要変更
var files = fol.getFiles();
while(files.hasNext()) {
var file = files.next();
//JPEG,GIF,PNG画像のみ処理
if(file.getMimeType().match(/^image\/(?:jpeg|gif|png)$/i)) {
try {
addImageSlide(prs, file.getBlob());
} catch(e) {
Logger.log(file.getName() + ":" + e.message);
}
}
}
SlidesApp.getUi().alert("処理が終了しました。");
}
//空白スライドを追加し画像を挿入
function addImageSlide(prs, imageBlob) {
var slide = prs.appendSlide(SlidesApp.PredefinedLayout.BLANK);
var image = slide.insertImage(imageBlob);
var imgWidth = image.getWidth();
var imgHeight = image.getHeight();
var pageWidth = prs.getPageWidth();
var pageHeight = prs.getPageHeight();
var newX = (pageWidth / 2) - (imgWidth / 2);
var newY = (pageHeight / 2) - (imgHeight / 2);
image.setLeft(newX).setTop(newY); //画像中央揃え
}
上記コードを実行すると、Google ドライブのフォルダにある画像(JPEG,GIF,PNG)を1ファイルずつ追加した空白スライドに挿入していきます。
大まかな処理の流れは下記の通りです。
DriveApp.getFolderByIdメソッドでフォルダ取得
↓
Folder.getFilesメソッドでFileIterator取得
↓
FileIterator.nextメソッドを繰り返し実行し、フォルダ内のFileを順次取得
↓
File.getMimeTypeメソッドでMIMEタイプを取得し、JPEG,GIF,PNG画像のみ処理実行
↓
Slide.insertImageメソッドの引数にFile.getBlobメソッドで取得した画像ファイルのBlobを指定して、スライドに画像を挿入
↓
Image.setLeftメソッドとImage.setTopメソッドで画像をスライドの中央に配置
ここまで来ると、大分実用的になってきました。
参考Webサイト
- 画像や動画を挿入、削除する
- https://support.google.com/docs/answer/97447?co=GENIE.Platform%3DDesktop&hl=ja
- Tutorial: Generating Google Slides from images
- https://developers.google.com/apps-script/articles/image-slides

















この記事へのコメントはありません。