【GAS】Google Apps Script 活用事例 特定フォルダ内のファイル拡張子を一括で、JPGに変更するスクリプト
新卒採用の事務をやっていると、パソコンを持っていないからか、履歴書をスマホで撮影したJPGで送ってくれる人が一定数います。けれども、採用管理システムの都合で、PDF以外のファイルだと閲覧できない事が多々あります。
「おま、とりあえず、PDFで送ってくれよ」
パソコンが無くても、コンビニでスキャンくらい出来るぞい!!また別の業務で、スプレッドシートにスライドをセル内の画像として挿入することが度々あり、PDFを、一括でJPGに変換出来ないかなと思ったので、その備忘録です。(セル内の画像にすると、列や行を挿入しても適宜、自動でサイズが変わってくれるので、良い見栄えをキープしてくれます。)
結論、2020年9月現在、GASで、PDFをJPGに、一括変換することは出来ません(泣き)ッ!!
pythonとかで、ブラウザ操作を自動化するみたいのしないとダメかもです。
Google Driveにあるファイルを全てJPGに変換する
//JPGに全て変える
function convertJPG() {
const folderId = '*******************';//元のフォルダ
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
console.log(files);
//削除したく無い場合はmoveTo()を使用する。
//移動先のフォルダIDを入力する。
//const destination = DriveApp.getFolderById(*********);
while (files.hasNext()) {
const file = files.next();
const isImage = file.getBlob().getContentType();
console.log(isImage);
//png以外のファイルは、処理をスキップする
if(isImage !== 'image/png' ){continue}
const jpg = file.getAs('image/jpeg');
folder.createFile(jpg);
//変換前のファイルを、ゴミ箱に捨てる
file.setTrashed(true);
//削除したく無い場合は、moveToを使う
//file.moveTo(destination);
}//while
}//end
これはこれで、Webデザインなんかをやる時とかは便利かもなと思いました。拡張子が混ざっていると不便なので......。でも、ファイルサーバーをGoogle Driveにする事.....ほとんど無いかな?
ほとんどのblobでは、 'application / pdf'が唯一の有効なオプションです。
おそらく上記が意味するところは、Google SpreadsheetなどG Suiteアプリケーションからの変換という意味だと思います。つまり、blobを仕様した変換は出来るけども、PDFだけよーという事だと思います。
urlFetchAppを使うと、Google Slidesの場合は、ppt形式だったり、JPG形式に変換する事が出来ます。ただし、全てを画像で保存する場合は、プログラムを使うより、パワーポイントに変換してダウンロード、全て画像でエクスポートする方が、早いし簡単です。
removeFileは廃止されたようですね。ファイルの削除は、setTrashed、ファイルの移動は、moveToを使うように変更になったようです。
拡張子の変換
アップロードされた日付が特定の日であれば処理を続行する
const folder = DriveApp.getFolderById('************');
const files = folder.getFiles();
console.log(`フォルダー名: ${folder.getName()}`);
const stringDate = (date, number, format) => {
date.setDate(date.getDate() + number);
return Utilities.formatDate(date, 'JST', format);
};
const date = new Date();
const today = stringDate(date, 0, 'yyyy/MM/dd');
while (files.hasNext()) {
const file = files.next();
const fileName = file.getName();
const uploadTime = stringDate(file.getDateCreated(), 0, 'yyyy/MM/dd');
console.log(`ファイル名: ${fileName} 日付: ${uploadTime}`);
//本日の日付と、アップロードされた日付が一致したら
if(today === uploadTime){
console.log(`該当するファイル: ${fileName}`);
}
}
Google Driveの操作
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?