はじめに
Google謹製の同期ソフトを用いてローカルのフォルダにファイルをコピペしたら自動でメール提出してくれます。
IFTTTでできそうですが、添付ファイル名が変わってしまう問題があります。また、複数のファイルの添付に対応していません。
GASで作ろう
フォルダ名'boss@example.com'に追加されたファイルをboss@example.comに送ります
GoogleDriveのフォルダIDを入力するのが面倒だったので、フォルダ名をメールアドレスとして取得するようにしてます。
普通にIDで指定した方がいいかもしれません。
またはローカルで操作を完結させるためにフォルダ名からメールアドレスを取得するでも良いかもしれません。
function main() {
autoSubmitFiles('boss@example.com', //メールアドレス
'files の提出', //題名。filseは添付されるファイル名に置換される
'hogeです.\nfiles をメールに添付して提出します.\nよろしくお願いします.'//本文
);
}
function autoSubmitFiles(address, subject, Body) {
var folder = DriveApp.getFoldersByName(address).next(); //フォルダ検索
var files = iteratorToArr(folder.getFiles()); //ファイルの取得と配列への変換
if (files.length == 0) //ファイルがなければ終了
return;
MailApp.sendEmail({ //メールの提出
to: address,
subject: subject.replace("files", "" + files),
body: Body.replace("files", "" + files),
attachments: files
});
files.map(function(x){ //ファイルの削除
folder.removeFile(x);
})
}
function iteratorToArr(files) {
var arr = [];
while(files.hasNext()) {
arr.push(files.next());
}
return arr;
}
問題点
同期ソフトの同期とGASの実行のタイミングによっては複数のファイルが分割されて送られる可能性があります。
GASは最短1分刻みの実行なのでIFTTTより速度で劣るかもしれません。
フォルダに入れたファイルは削除されます。Gmail上には残ります。
細かな設定のためにはブラウザを開く必要があります。
テキストファイルを使って全部ローカルで完結させることもできますが、そこまですることでもないかと思ってます。