見出し画像

GASで毎週定時にメールを送る

GASはgoogle スプレッドシートの略だとこの記事を書く1時間前まで勘違いしていた、あずきです。

GASはGoogle Apps Scriptの略なのですが、Googleが開発しているプログラミング言語の一種だそうです。googleのサービスと連携して、より便利なことが無料でできるものって考えればいいと思います。

詳しくはこちらの記事がわかりやすかったです!
Udemy メディア【Google Apps Script入門】GASでできることや活用方法まで紹介!


今回は毎週定時にメールを送るスクリプトを書きました!

定時にっていうのが少し厄介だったのですが、色んな先人の知恵をお借りしてなんとかできました!


1. メールを送る関数を作る

まず、ベースで参考にしたのがこちら!
[GAS]Gmailで、定期的(1時間ごと)にメールを送信する方法

こちらの記事では1時間ごとにメールを送信しておりなかなか高度な処理をしてらっしゃいますが、ちょっとずつ必要な部分だけ参考にさせていただきました。

function weeklyMail() {
 
 var dayNum = new Date().getDay();             //あとで曜日判定をするための関数
 
 var to = ['****@gmail.com, *****@gmail.com']; //宛先

 var title = "タイトル";  //メールタイトル
 var body =                                         //メール本文
       "ダミーテキストでよくみる\n\n" 
       + "宮沢賢治の小説でも\n"
       + "入れようかと思ったけど\n\n"
       + "私はクラムボン(やまなし)派なので\n"
       + "やめておいたよ\n";
     
 //曜日判定(水曜日のみ送る)
 if (dayNum == 3) {
     MailApp.sendEmail(to.join(','), title, body); //メール送信処理
 }
 setTrigger(); //次のトリガーを設置する
 
}

function setTrigger(){
 delTrigger(); 
 const time = new Date();
 time.setHours(13);
 time.setMinutes(18);
 ScriptApp.newTrigger('weeklyMail').timeBased().at(time).create();
}

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

私が書いたスクリプトの全体像はこんな感じ!

weeklymail関数のところは先ほどの記事を参考に、誰にどんなメールを送るかを書いたのち、水曜日だけメールを送るよという処理を書きました。

日曜日が0で月曜日が1で...みたいな感じで、new Date().getDay();で取得できる曜日は数字が順番に割り振られているようです。なので、水曜日は3番目!

2. トリガー関数を作って、定時に送れるようにする

setTriggerとdelTriggerはこの記事を参考にし増田↓
Google Apps Script で毎日決まった時刻にスクリプトを実行するトリガー設定

ここの部分が、定時に送信するっていうところの要!!
GASの標準機能で決められるトリガーは〇〇時〜〇〇時みたいな感じで細かい時間は設定できないのです(´・ω・`)

なので、先ほどの記事の最初の図で説明されているように、標準機能のトリガーでsetTrigger関数を呼び出して、setTrigger関数で自分の好きな時間に送信するというトリガーを設定して、そのトリガーにweeklyMail関数を呼び出させるということをするのです!

(ほとんど参考サイトと同じ図なのですが一応載せておきます。)

画像1

setTrigger関数を呼び出すだけだと、トリガーがたくさんできてしまうので、delTrigger関数、つまりdelete Trigger関数を作って毎回作られるsetTrigger関数を都度消していきます。

これについてはこちらを参考にしました↓
Google Apps Scriptで使用済みのトリガーを削除する方法


3. まとめ

こんな感じで非常にざっくりなのですが、毎週定時にメールを送るという処理ができました。

ちなみに最初は権限みたいなのが必要らしいので、こちらの記事を参考にして権限を与えてあげるといいかもです。

【GAS(GoogleActionScript)】「このアプリは確認されていません」このアプリは、Googleによる確認が済んでいません。と表示される場合の対処法


この記事が気に入ったらサポートをしてみませんか?