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関数を呼び出させるということをするのです!
(ほとんど参考サイトと同じ図なのですが一応載せておきます。)
setTrigger関数を呼び出すだけだと、トリガーがたくさんできてしまうので、delTrigger関数、つまりdelete Trigger関数を作って毎回作られるsetTrigger関数を都度消していきます。
これについてはこちらを参考にしました↓
Google Apps Scriptで使用済みのトリガーを削除する方法
3. まとめ
こんな感じで非常にざっくりなのですが、毎週定時にメールを送るという処理ができました。
ちなみに最初は権限みたいなのが必要らしいので、こちらの記事を参考にして権限を与えてあげるといいかもです。
【GAS(GoogleActionScript)】「このアプリは確認されていません」このアプリは、Googleによる確認が済んでいません。と表示される場合の対処法
この記事が気に入ったらサポートをしてみませんか?