2021/11/03に更新

【GASで時短】ドライブにある画像を1枚ずつスライドに貼る

スライドドライブ小技

特定のGoogle Driveにある画像を、1枚ずつスライドに貼り付けてくれるGoogle Apps Scriptです。大量の画像を含む報告資料やメンバー紹介用スライドなどにどうぞ。画像はスライドの中央に配置されます。対応している画像タイプはJPG、GIF、PNGの3種類です。

こんな悩みを解決します


  • Googleドライブにある画像をまとめてスライドに貼りたい。
  • 画像が多く手間がかかる。

用意するもの


特にありません。今お使いのスライドに組み込めます。

このスクリプトで出来ること


  • 指定されたGoogleドライブのフォルダにある画像を、1枚ずつスライドに貼り付けます。
  • 画像はスライド中央に配置されます。

使い方


1.画像をフォルダに保存する

貼り付けたい画像を、Googleドライブにアップロードします。
スクリプト実行のたびに1つのフォルダを処理します。画像を複数のフォルダに保存している場合は、スクリプトをフォルダの数だけ実行してください。
画像(JPG、GIF、PNG)以外のファイルは無視しますので、他のファイル形式(スプレッドシートなど)が保存されていても問題ありません。

2.スクリプトを実行

上部のメニューから「ドライブの画像を1枚ずつスライドに貼る」を実行します。

「画像が保存されているフォルダのURLを入力してください」とメッセージが出ますので、フォルダのURLを入力してください。https://drive.google.comから始まる文字列です。

スクリプト終了まで待つと、スライドが追加されてそれぞれに画像が1枚ずつ配置されているはずです。
この処理は比較的重いようで、5枚の画像を貼るのに10秒前後かかります。画像が大量にある場合は、GASの最大実行時間にご注意ください。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00019/index.html
 */

function onOpen() {
  var ui = SlidesApp.getUi();

  // メニューの表示名
  var menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('ドライブの画像を1枚ずつスライドに貼る', 'insertImageFromDrive');

  // メニューを画面に追加する
  menu.addToUi();
}


function insertImageFromDrive() {

  // uiを取得
  let ui = SlidesApp.getUi();

  // 画像が保存されているドライブのURLを入力させる
  const input = ui.prompt('URLを入力してください', '画像が保存されているGoogleドライブのフォルダのURLを入力してください', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたら終了
  if (input.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 入力されたURLからフォルダのIDを取得する
  const url_drive_id = input.getResponseText().match(/https:\/\/drive.google.com\/drive\/folders\/(.*)$/)[1];

  // フォルダ、ファイルを取得
  const folder = DriveApp.getFolderById(url_drive_id);
  let files = folder.getFiles();

  // 開いているプレゼンテーションを取得
  let presentation = SlidesApp.getActivePresentation();

  // ファイルを取り出し終わるまでループ
  while (files.hasNext()) {

    // ファイルを取得
    let file = files.next();

    // MIMEタイプがimageではないものは処理しない
    if(!file.getMimeType().match(/image/)){
      continue;
    }

    // 画像のバイナリを取得
    let image_blog = file.getBlob();

    // スライドを追加する
    let slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);

    // 画像をスライドに追加する
    slide.insertImage(image_blog);

    // 追加した画像を取得して、スライド中央に配置する
    let image_object = slide.getImages()[0];
    image_object.alignOnPage(SlidesApp.AlignmentPosition.HORIZONTAL_CENTER).alignOnPage(SlidesApp.AlignmentPosition.VERTICAL_CENTER);

  }
}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp