見出し画像

【GAS】Google Apps Script 活用事例 特定フォルダ内のファイル拡張子を一括で、JPGに変更するスクリプト

新卒採用の事務をやっていると、パソコンを持っていないからか、履歴書をスマホで撮影したJPGで送ってくれる人が一定数います。けれども、採用管理システムの都合で、PDF以外のファイルだと閲覧できない事が多々あります。

「おま、とりあえず、PDFで送ってくれよ」

パソコンが無くても、コンビニでスキャンくらい出来るぞい!!また別の業務で、スプレッドシートにスライドをセル内の画像として挿入することが度々あり、PDFを、一括でJPGに変換出来ないかなと思ったので、その備忘録です。(セル内の画像にすると、列や行を挿入しても適宜、自動でサイズが変わってくれるので、良い見栄えをキープしてくれます。)

スクリーンショット 2020-09-18 1.59.49

結論、2020年9月現在、GASで、PDFをJPGに、一括変換することは出来ません(泣き)ッ!!

pythonとかで、ブラウザ操作を自動化するみたいのしないとダメかもです。

スクリーンショット 2020-09-18 1.56.15

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にする事.....ほとんど無いかな?

The MIME type to convert to. For most blobs, 'application/pdf' is the only valid option. For images in BMP, GIF, JPEG, or PNG format, any of 'image/bmp', 'image/gif', 'image/jpeg', or 'image/png' are also valid.

変換するMIMEタイプ。ほとんどのblobでは、 'application / pdf'が唯一の有効なオプションです。 BMP、GIF、JPEG、またはPNG形式の画像の場合、「image / bmp」、「image / gif」、「image / jpeg」、または「image / png」のいずれも有効です。

ほとんどの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の操作



この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?