2
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】GDriveにファイルが追加されたらGmailで添付してメールする(2)

Last updated at Posted at 2018-05-24

はじめに

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上には残ります。
細かな設定のためにはブラウザを開く必要があります。
テキストファイルを使って全部ローカルで完結させることもできますが、そこまですることでもないかと思ってます。

2
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
2
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?