LoginSignup
2
5

More than 1 year has passed since last update.

【GAS】エクセルを自動でスプレッドシートへ変換&アーカイブしといてくれるフォルダ

Last updated at Posted at 2022-02-21

概要

書類としてのエクセルシートが溜まって鬱陶しい。

一旦通したら二度と見返すこともないはずだけど、何かあった時のために取っておいた方が良いだけの、サイズの小さなエクセルファイルが無数に増えていく。

ドライブにアップしてPCからは消してしまおう。ドライブにアップするなら、スプレッドシートに変換すれば便利かも?

と言うわけで、エクセルファイルをアップしておくと、自動でスプレッドシートに変換して、特定のフォルダにアーカイブしておいてくれる魔法のフォルダをドライブ上に実装した。

流れ

①アップロードフォルダにエクセルファイルを保存
 ↓
②毎日トリガーでスクリプトが作動
 ↓
③フォルダ内のファイルをスプレッドシートへ変換
 ↓
④アーカイブ用のフォルダへ保存
 ↓
⑤元のファイルは削除

①以外は全て自動。
GASさんパねーっす!

コード

次のスクリプトを、就業時間外にトリガーセットし毎日実行。

function extoss() {

  //アップロードフォルダとアーカイブフォルダのIDを指定
  var srcFolderId = 'アップロードフォルダのID';
  var dstFolderId = 'アーカイブフォルダのID';

  //アップロードフォルダのファイルを全て格納
  var xlsFiles = DriveApp.getFolderById(srcFolderId).getFiles();

  //本日の日付(ファイル名が被らないよう変換後のファイル名に日付を入れたい)
  var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd_');

  //ファイル総当たり
  while(xlsFiles.hasNext()) {

    //順番にファイルを取り出す
    var file  = xlsFiles.next();

    //新しいファイル名は「日付_元のファイル名」
    var title = date + file.getName();

    //ファイル名, マイムタイプ, 保存先など指定
    options = {title: title,
               mimeType: MimeType.GOOGLE_SHEETS,
               parents: [{id: dstFolderId}]};

    //変換してドライブへ保存 ※DriveApiの有効化が必要
    Drive.Files.insert(options, file.getBlob());

    //元のファイルをゴミ箱へ移動
    file.setTrashed(true);
  }
}

補足(してない)

フォルダIDの調べ方や、トリガーの設定、DriveApiの有効化についてはググると丁寧なサイトが出てくるので割愛。

ファイルを順番に取り出してくれるhasNext Nextは、for_ofみたいなメソッドで便利^^

検討

同じフォルダにPDFや画像を放り込んでおけば、ドキュメントに変換してくれる(画像はOCR処理付き)。記事のタイトル間違えたか?
変換処理の部分をtry_catchしておけば安全なんだろうけど、どうせ自分しか使わないので横着。
元ファイルについて、厳密には削除ではなくゴミ箱への移動。

おしまい

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5