1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[GAS] GoogleDriveにファイルが追加されたら添付してメールする

Last updated at Posted at 2018-03-10

概要

メインフォルダ下の各フォルダに追加されたファイルを各setting.txtの内容に従ってファイルをメールに添付して送信するものです。
google謹製の同期ソフトを使用してローカルでファイルを特定のフォルダに追加 → クラウドに同期 → settiing.txtに従い添付してメール送信みたいな動作を想定しています。

構成

フォルダ構成例

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

setting.txtには上から順にメールアドレス、タイトル、本文テンプレートが書かれてあります。

setting.txt
example@hoge.com
メールのタイトル
メール本文。<br>で改行。

フォルダとsetting.txtを追加すれば増やせます。添付ファイルは複数okです。

結果

タイトルなし.jpg

コード

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); 
}
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?