1
/
5

GASでBOT作成(サブスク更新アラートBOT)

Amazon primeやYouTube premiumなどのサブスクリプションに契約していると、よく更新日を忘れてしまうことがあります。それを防ぐために、更新日前日にGmailに更新日のお知らせを通知してくれるBOTを作ることにしました!

使用したもの

  • Google App Script(GAS)
  • Googleスプレットシート
  • Googleアカウント

googleスプレットシート

サブスクリプションの情報は以下のようになっています。


BOTの仕組み

  • GAS内のmonth関数とyear関数が、それぞれgoogleスプレットシートから月額の情報、年額の情報をそれぞれ取得する。
  • GAS内のdate関数で翌日の日付を取得して、情報内の日付と一致する場合、メール文のテンプレートに情報を格納する。
  • 情報を格納したメール文をGmailに送信する。


GAS

以下が今回作ったBOTのコードです。

//実行用関数

function execution(){
// 月額
const month_data = month_fn();
if (!month_data || month_data === '該当なし'){
console.log('該当なし');
} else {
if (month_data){
sendMail(month_data[0]);
}
};

//年額
const year_data = year_fn();
if (!year_data || year_data == '該当なし'){
console.log('該当なし');
} else {
if (year_data){
sendMail(year_data[0]);
}
};
};

//月の取得
function date(){
const today = new Date();
const tomorrow = new Date(today.getTime()+24*60*60*1000);
const month = tomorrow.getMonth()+1;
const date = tomorrow.getDate();
const date_list = [month, date]
console.log(date_list)
return date_list;
};

const month = date()

//アラート送信
function sendMail(data){
if (data){
console.log(data[0], data[1], data[3], data[4], data[5])
const recipient = '自分のGmailアドレス';
const subject = 'サブスクリプション更新告知アラート';
const body = `明日はサブスクリプションの更新日です。 【サービス】${data[0]} 【更新ペース】${data[1]} 【更新日】${data[3]}日 【値段】${data[4]}円 【支払いカード】${data[5]}`;

GmailApp.sendEmail(recipient, subject, body);
}
};




//シートの処理
function spreadsheet(){
const sheetId = '使用するgoogleスプレットシートのID';
const sheet = SpreadsheetApp.openById(sheetId);
const range = sheet.getDataRange();
const values = range.getValues();
const rows = values.slice(1);

return rows;
};


function month_fn(){
//翌日の日付を取得
const date_value = date()
console.log(date_value[0] + '/' + date_value[1]);

//月額
const datas = spreadsheet();
const month_pay_data = datas.filter(record => record[1] === '月額' && record[3] == date_value[1]);
console.log(month_pay_data);

if (month_pay_data.length > 0){
return month_pay_data;
} else {
return '該当なし';
}
};


//月と日両方一致している場合のみ取得
function year_fn(){
//翌年の日付を取得
const date_value = date()
console.log(date_value[0] + '/' + date_value[1]);

//年額
const datas = spreadsheet();
const year_pay_data = datas.filter(record => record[1] === '年額' && record[2] == date_value[0] && recode[3] == date_value[1]);
console.log(year_pay_data);

if (year_pay_data.length > 0){
return year_pay_data;
} else {
return '該当なし';
};
};

結果


このようにちゃんとGmailに通知が届きました!月額の場合は毎月届きますが、年額の場合は1年に1回届くようにしています。

まとめ

今回、初めてGASを使ってBOTを作ってみましたが、GASはPCを閉じてもずっと動いてくれるのでBOT作りには最適だなと感じました。BOTを作るときは今までPythonで作ってwindowsのタスクスケジューラを使って動かしていたので、GASの便利さに驚きました。今後もGASでいろいろBOTを作ってみようと思います!

Like daisuke yamamoto's Story
Let daisuke yamamoto's company know you're interested in their content