概要
書類としてのエクセルシートが溜まって鬱陶しい。
一旦通したら二度と見返すこともないはずだけど、何かあった時のために取っておいた方が良いだけの、サイズの小さなエクセルファイルが無数に増えていく。
ドライブにアップして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
しておけば安全なんだろうけど、どうせ自分しか使わないので横着。
元ファイルについて、厳密には削除ではなくゴミ箱への移動。