2022/06/13に更新

【GASで時短】フォルダ内のスライドをすべて連結する

スライドドライブ

指定フォルダに入っているすべてのスライドを連結するGoogle Apps Scriptです。課題などをアップロードしてもらった後、1ファイルにまとめたい時などにどうぞ。

こんな悩みを解決します


  • みんなに提出してもらったスライドを1ファイルにまとめたくなった!

用意するもの


あたらしくGoogleスライドを作成し、コンテナバインド型スクリプトとしてコードを登録してください。

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


  • 指定したフォルダに入っているすべてのスライドを、1つのスライドに集約することができます。

使い方


1.スクリプトの実行

サンプルとしてスライドを3個用意しました。

スクリプトを登録したスライドファイルで、メニューにある「スクリプト実行」から「指定したフォルダのスライドすべてを集約する」を実行します。

2.フォルダURLの入力

まとめたいスライドが保存されているフォルダのURLを入力します。
スライド以外のファイルが混在していても問題ありません。

3.結果の確認

しばらく待つと現在開いているスライドに、各ファイルのスライドが現れます。
テキストだけのスライドはもちろん、画像付きのスライドも問題なくコピーされています。

スクリプト


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

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

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

  // メニューに追加するボタン
  menu.addItem('指定したフォルダのスライドすべてを集約する', 'aggregate_all_slides');

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


function aggregate_all_slides() {

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

  // 実行してもよいか確認する
  let ui = SlidesApp.getUi();
  let response = ui.prompt('GoogleドライブのURLを入力してください','例:https://drive.google.com/drive/folders/****************', ui.ButtonSet.OK_CANCEL);

  // CANCELが押されたら処理中止
  if (response.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 入力されたURLを取り出す
  const url = response.getResponseText();

  // フォルダURLからID部分を取得する
  const folder_id = url.replace(/^https:.*folders\//, '');

  // フォルダ内のファイルを取得する
  const files = DriveApp.getFolderById(folder_id).getFiles();

  // ファイルが存在する限り、処理を繰り返す
  for (let i = 0; files.hasNext(); i++) {

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

    // ファイルがスプレッドシートかどうか判断するために、mimetypeを取得
    let mimetype = file.getMimeType();

    // スライドのmimetypeは「application/vnd.google-apps.presentation」
    if (mimetype.match(/presentation/)) {

      // コピー対象のプレゼンテーションを取得する
      let target_presentation = SlidesApp.openById(file.getId());

      // スライドをすべて取得する
      let slides = target_presentation.getSlides();

      // スライドの数だけループし、現在開いているプレゼンテーションに追加していく
      for(let j = 0; j < slides.length; j++){
        presentation.appendSlide(slides[j]);
      }
    }
  }
}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp