[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.gsfunction 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); 
}
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여([GAS]GoogleDrive에 파일이 추가되면 첨부 및 이메일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/golyat/items/a1d5e2531ac824cf0943
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
폴더 구성 예
폴더
メインフォルダ/
┝ hoge部長/
|   └ setting.txt
└ fuga先生/
    ┝ setting.txt
    ┝ 添付送信されるファイル1
    └ 添付送信されるファイル2
setting.txt는 위에서부터 순서대로 이메일 주소, 제목 및 본문 템플릿을 작성합니다.
setting.txt
[email protected]
メールのタイトル
メール本文。<br>で改行。
폴더와 setting.txt를 추가하면 늘릴 수 있습니다. 첨부 파일은 여러 ok입니다.
결과
 
 코드
autoMail.gsfunction 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); 
}
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여([GAS]GoogleDrive에 파일이 추가되면 첨부 및 이메일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/golyat/items/a1d5e2531ac824cf0943
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
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); 
}
Reference
이 문제에 관하여([GAS]GoogleDrive에 파일이 추가되면 첨부 및 이메일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/golyat/items/a1d5e2531ac824cf0943텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)