【簡単】Gmailでメールを定期的に送信する方法【GAS】


 

 

本記事ではGoogle Apps Scriptを使ってメールを定期的に自動で送信する方法を紹介したいと思います。

【コピペでOK】Gmail定期送信スクリプト

function mail() {

    var to = ['hogehoge@gmail.com', 'fugafugafuga@gmail.com'];

    var title = "件名";

    var body = "本文";

    MailApp.sendEmail(to, title, body);

}

function setTrigger(){
    delTrigger();
    var setTime = new Date();
    setTime.setHours("時");
    setTime.setMinutes("分");
    ScriptApp.newTrigger('mail').timeBased().at(setTime).create();
}

function delTrigger() {
    var triggers = ScriptApp.getProjectTriggers();
    for(var i=0; i < triggers.length; i++) {
        if (triggers[i].getHandlerFunction() == "mail") {
            ScriptApp.deleteTrigger(triggers[i]);
        }
    }
}

sendEmailでメール送信の関数を作る

まずは、実行したらメールが送信される関数を作ります。

以下の3つの要素を格納する変数を宣言しましょう!

  • 送り先メールアドレス
  • タイトル
  • 本文

 

ちなみに送り先は複数宣言しても大丈夫です!

 

上記3つを引数として、MailAppオブジェクトのsendEmailメソッドを宣言します

↓こんな感じです

function mail() {
    var to = ['hogehoge@gmail.com', 'fugafugafuga@gmail.com'];
    var title = "件名";
    var body = "本文";
    MailApp.sendEmail(to, title, body);
}

 

sendEmailを実行してみる

とりあえず、ステップ1で作ったスクリプトを実行してみましょう。

初回のみ、アカウントを認証する作業が必要です。

まずは、command+s(もしくはctl+s)でスクリプトを保存しましょう。

名前は適当で大丈夫です。(画像では”mail”とつけています)
スクリーンショット 2018-08-26 16.03.05.png

赤枠で囲った部分が、作成した関数名(今回は”mail”)になっていることを確認し、

実行マークをクリック(もしくはcommand+r)して関数を実行してみましょう!

スクリーンショット 2018-08-26 16.15.17.png

承認が求められるので”許可を確認”をクリックします。

スクリーンショット 2018-08-26 16.11.48.png

ログインするアカウントを選択しましょう。

スクリーンショット 2018-08-26 16.12.13.png

この時選択したアカウントから、メールが送信されることになります。

スクリーンショット 2018-08-26 16.12.42.png

右下の許可ボタンを押します。

以上で認証作業は終了です!

to変数の中身を自分のアドレスに書き換えて実行し、

メールが送られていることを確認してみましょう。

 

newTriggerで送信時刻を予約する

続きまして、送信したい時間を予約しましょう

GASにはトリガーという機能がありまして、指定した時間に指定した関数を実行してくれるというものです。

トリガーを作成するためには、ScriptApp.newTriggerメソッドを使います。

以下の要素を指定します。

  • 実行したい関数
  • 時間を指定する変数

 

 

具体的にはこんな感じ↓です。

function setTrigger(){
    var setTime = new Date();
    setTime.setHours(18); //時間をセット
    setTime.setMinutes(00);//分をセット
    ScriptApp.newTrigger('mail').timeBased().at(setTime).create();
}

このsetTrigger関数を実行することで、

18時に”mail”関数を実行するトリガーを作成することができます。

画面上部”編集”→”現在のプロジェクトのトリガー”から、作成されたトリガーを確認してみましょう

スクリーンショット 2018-08-26 16.45.39.png
スクリーンショット 2018-08-26 16.46.56.png

無事、”mail”関数のトリガーが作成されました。

しかし、このsetTrigger関数を毎回手動で実行するのは賢くないですよね。

そこで、setTriggerそのもののトリガーも作成しましょう。

先ほどのトリガー一覧から、”新しいトリガーを追加”します。

 

設定はこんな感じ↓で

スクリーンショット 2018-08-26 17.18.30.png

これで日付が変わったころに、毎日トリガーを作成してくれます。

 

しかし、このトリガーは1度実行されても削除されるわけではありません。

毎日使っていると、邪魔なトリガーがどんどん蓄積されてしまいます。こんな感じ↓

スクリーンショット 2018-08-26 17.17.59.png

邪魔ですね!!!

 

なので、トリガー作成と同時に、古いトリガーを削除する関数も実行してしまいましょう。

トリガーを削除するためには、ScriptApp.deleteTriggerメソッドを使います。

function delTrigger() {
    var triggers = ScriptApp.getProjectTriggers(); //全てのトリガーを取得
    for(var i=0; i < triggers.length; i++) { //トリガーを1つずつ取り出す
        if (triggers[i].getHandlerFunction() == "mail") { //関数名をチェック
            ScriptApp.deleteTrigger(triggers[i]); //削除したい関数名と一致したトリガーを削除
        }
    }
}

 

これで”mail”関数のトリガーだけを削除することができます。

setTrigger関数の1行目でdelTriggerを呼び出しましょう。

function setTrigger(){
    delTrigger(); //←追加
    var setTime = new Date();
    setTime.setHours(18);
    setTime.setMinutes(00);
    ScriptApp.newTrigger('mail').timeBased().at(setTime).create();
}

ここまでで、予約送信のためのスクリプトが完成しました!

 

GASは使いこなせると、色々な作業を自動化できるようになります。

また、サーバを立てる必要がないため、プログラミング初心者でもかなりとっつきやすいと思います。

ぜひ色々なツールを作ってみましょう!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください