kazasiki's blog

プログラミングとかゲームとか

Slidesファイルをpdfに変換するGoogleAppsScript

仕様書やワイヤーフレームをGoogleSlidesでよく作るor作ってもらうんだけど、地味に開くのに時間がかかるのでpdfかするgasを書きました。 destDir.createFile(file.getBlob()) だけで変換自体はできるんだけど、同名のファイルが既にあれば消したり、前回変換したときから更新されてるやつだけ対象にしたら結構なスクリプトになったので公開します。

function myFunction() {
  var srcDir = DriveApp.getFolderById("slides folder");
  var destDir = DriveApp.getFolderById("pdf folder");
  var files = srcDir.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    if (file.getMimeType() != "application/vnd.google-apps.presentation") {
      continue
    }
    destName = file.getName() + ".pdf";
    var exist = false;
    var dFile;
    destFiles = destDir.getFilesByName(destName); // 毎回getFilesByNameをするの効率悪い...
    while (destFiles.hasNext()) {
      var destFile = destFiles.next()
      if (destFile.getName() == destName) {
        exist = true;
        dFile = destFile
        break;
      }
    }
    if (!exist){
      destDir.createFile(file.getBlob())
    }
    if (exist && dFile.getLastUpdated() < file.getLastUpdated()) {
      dFile.setTrashed(true)
      destDir.createFile(file.getBlob())
    }
  }
}