LoginSignup
1
3

More than 5 years have passed since last update.

Googleクラウドサービスを利用して時間指定メール送信システムを作る(その5)

Last updated at Posted at 2017-05-16

前へ> <次へ
 GASでメール送信を試してみます。


1. Google Apps Scriptでのメール送信

  • GASの関数として,MailApp.sendEmail()等が用意されている。これはnewでオブジェクト(インスタンス)を作成する必要がない,スタティック(いつでも実行可能)なクラス.メソッドである。
  • 詳しくは,GASマニュアルを参照。
  • 引数を渡してメールを送る次のメソッドでも良いが,一般にはsendEmail(message)を使用するのが楽。
    sendEmail(recipient, subject, body)
    sendEmail(recipient, subject, body, options)
    sendEmail(to, replyTo, subject, body)

  • sendEmail(message)は,一番フレキシブルで使いやすく,たくさんのオプションが利用できる。message{}でくくることで,Advanced parametersが利用できる。

  • Advanced parametersの使用例は,下のサンプルプログラムを参照。to, cc, bcc, name subject, body等の便利なパラメータが利用できる。

  • サンプルプログラムでは,添付ファイルを送信する準備のため,new Array()で添付ファイルを格納する配列を用意しているが,使っていない。

  • ループを組んで一度にメール送信することは,スパムメールになるのでやってはいけない。

  • GASで1日に送信できるメール通数に限界があり,50通程度で出せなくなる。

  • toAdrにメールアドレス,その他も適当に代入すれば,メール送信テストができる。

  • メール本文に,getDateAndTime()関数により,送信日時を入れている。

  • 実行時には,承認が必要になるので,確認して,許可する。

画像1.png
画像1.png

GASでメール送信
logID= "**********";//手動でDocumentを新規作成しIDを調べておく

function main(){
  var log = new Doc(logID);
  log.print("送信先等の設定\n");
  var toAdr = "xxxxx@gmail.com";//送り先アドレス
  var ccAdr = "";//Ccアドレス
  var bccAdr = "";//bccアドレス
  var subject = "GASからメール送信";//メールの題目
  var name = "";//送り主の名前
  var files = new Array();//添付ファイル,どんな型でも,いくつでも格納できる配列,
  //場所は確保してないのでpushメソッドで格納する
  var body =
    "メール送信テスト\n" +
    "送信日時:" + getDateAndTime(0) + "\n"
    "メール本文" + "\n";
  MailApp.sendEmail({to:toAdr, cc:ccAdr, bcc:bccAdr, subject:subject, name:name, body:body, attachments:files});
  log.print("メール送信完了\n");
}

function getDateAndTime(data){// 引数がゼロなら現在日時そうでなければ指定日時をyyyymmdd_hhmmssで返す
  if(data==0) var now = new Date();
  else        var now = new Date(data);
  var year = now.getYear();
  var month = now.getMonth() + 1;
  var day = now.getDate();
  var hour = now.getHours();
  var min = now.getMinutes();
  var sec = now.getSeconds();
  return (""+year).slice(0,4) + ("0"+month).slice(-2) + ("0"+day).slice(-2) +'_'+ 
    ("0"+hour).slice(-2) + ("0"+min).slice(-2) + ("0"+sec).slice(-2);
}

//////////Docクラスの定義開始(コンストラクタとメンバ関数で構成)
//Docクラスのコンストラクタの記述
Doc = function(id){
  this.ID = id;
  this.doc = DocumentApp.openById(this.ID); 
  this.body = this.doc.getBody();
  this.docText = this.body.editAsText();
}
//Docクラスのメンバ関数の定義開始
//メソッドprintの定義,テキスト追加
Doc.prototype.print = function(str){
  this.docText.appendText(str);
}
//メソッドreplaceの定義,文字列置き換え
Doc.prototype.replace = function(src,dst){
  this.body.replaceText(src,dst);
}
//メソッドclearの定義,全消去
Doc.prototype.clear = function(){
  this.body.clear();
}
//メソッドgetIDの定義,ファイルIDを返す
Doc.prototype.getID = function(){
  return this.ID;
}
//////////Docクラスの定義終了

 次は,フォームを使った時間指定メール送信システムのインターフェース作りです。
前へ> <次へ


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