[GAS]GoogleDrive에 파일이 추가되면 첨부 및 이메일

개요



메인 폴더 아래의 각 폴더에 추가된 파일을 각 setting.txt의 내용에 따라 파일을 메일에 첨부하여 송신하는 것입니다.
Google의 동기화 소프트웨어를 사용하여 로컬에서 파일을 특정 폴더에 추가 → 클라우드에 동기화 → settiing.txt에 따라 첨부하여 메일을 보내는 것과 같은 동작을 가정합니다.

구성



폴더 구성 예

폴더
メインフォルダ/
┝ hoge部長/
|   └ setting.txt
└ fuga先生/
    ┝ setting.txt
    ┝ 添付送信されるファイル1
    └ 添付送信されるファイル2

setting.txt는 위에서부터 순서대로 이메일 주소, 제목 및 본문 템플릿을 작성합니다.

setting.txt
[email protected]
メールのタイトル
メール本文。<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); 
}

좋은 웹페이지 즐겨찾기