概要
メインフォルダ下の各フォルダに追加されたファイルを各setting.txtの内容に従ってファイルをメールに添付して送信するものです。
google謹製の同期ソフトを使用してローカルでファイルを特定のフォルダに追加 → クラウドに同期 → settiing.txtに従い添付してメール送信みたいな動作を想定しています。
構成
フォルダ構成例
フォルダ
メインフォルダ/
┝ hoge部長/
|   └ setting.txt
└ fuga先生/
    ┝ setting.txt
    ┝ 添付送信されるファイル1
    └ 添付送信されるファイル2
setting.txtには上から順にメールアドレス、タイトル、本文テンプレートが書かれてあります。
setting.txt
example@hoge.com
メールのタイトル
メール本文。<br>で改行。
フォルダとsetting.txtを追加すれば増やせます。添付ファイルは複数okです。
結果
コード
autoMail.gs
function autoMail() {
  var folderId = 'メインフォルダid';
  
  folders2Arr(DriveApp.getFolderById(folderId).getFolders()) //メインフォルダ下のフォルダをすべて取得                                                                             
  .filter(function (folder) { 
    return files2Arr(folder.getFiles()).length >= 2; //setting.txtしかないものはフィルタ
  }) 
  .map(function(folder) {                              
    return folder.getFilesByName('setting.txt').next() //setting.txtの取得
    .getBlob().getDataAsString("sjis").split(/[\s]+/)  //shiftjisで読み込み、改行部分で分けて配列に
    .concat([files2Arr(folder.getFiles())              //添付ファイルの配列を末尾に追加
            .filter(function(file) { 
              return file.getName() != 'setting.txt'; 
            })]
    )
    .concat(folder);                                   
  })
  .map(function([to, sub, body, files, folder]) {
    
    MailApp.sendEmail({ //メールの送信
      to: to,
      subject: sub,
      htmlBody: body,
      attachments: files
    });
    
    files.map(function(x){ //送信したファイルを削除
      folder.removeFile(x); 
    })
  });
}
 
function files2Arr(files) { //配列に変換
  var arr = [];
  
  while(files.hasNext()) {
    arr.push(files.next());
  }
  
  return arr; 
}
function folders2Arr(folder) {
  return files2Arr(folder); 
}

