근육 트레이닝 습관화를위한 리마인드 메일을 GAS로 실현
근육 트레이닝. 습관화 할 수 있습니까?
근육 트레이닝. 하려고 생각하고 좀처럼 습관화할 수 없네요. 저도 대개 3일 보주로 좀처럼 계속되지 않았습니다. .
그런 내가 스즈키 타츠야 씨의 "PRIDE BODY"라는 프로그램을 만나,
한 달 동안 매일 근육 트레이닝이 계속됩니다. 굉장하지 않니?
자세한 것은, 스즈키 타츠야씨의 「PRIDE BODY」로 구그라고 봐 주시면 알겠습니다만,
"근육 트레이닝 메뉴를 메일로 매일 리마인드한다"
라고 하는 구조가 있어, 나에게는 그 방법이 매우 매치하고 있던 것 같습니다..
이번에는 이 메일로 리마인드하는 구조를 GoogleAppScript(GAS)로 실현해 보았으므로 비망록으로 남깁니다.
하고 싶은 일
사전에 스프레드시트에 준비한 콘텐츠를 이메일로 전달하기만 하면 됩니다.
간단한 구성도는 이쪽.
1
구현
즉시 구현 내용의 이야기입니다.
스프레드시트 예
전달할 콘텐츠의 정보를 미리 스프레드시트에 만들어 둡니다.
사전에 스프레드시트에 준비한 콘텐츠를 이메일로 전달하기만 하면 됩니다.
간단한 구성도는 이쪽.
1
구현
즉시 구현 내용의 이야기입니다.
스프레드시트 예
전달할 콘텐츠의 정보를 미리 스프레드시트에 만들어 둡니다.
스크립트
스크립트에 코멘트를 남기기 때문에 자세한 설명은 생략하지만,
강하게 말하면
getContentsByDate()
에서 API 액세스를 최대한 줄이는 것을 목적으로 스프레드시트의 내용을 2차원 배열로 취득하고 있는 것은 포인트입니다.※실제로 시험할 때용으로 콘솔 로그는 코멘트 아웃 해 남기고 있습니다.
코드.gs
function reminder() {
// スプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// シートを取得
const sheet = ss.getSheetByName('リマインド内容');
// 今日の文字列(yyyymmdd形式)を取得
const today = Utilities.formatDate( new Date(), 'Asia/Tokyo', 'yyyyMMdd');
// 今日のコンテンツを探す。
const content = getContentsByDate(sheet, today, 2);
// console.log(content);
// コンテンツが取得できなかったら処理を終了する。
if ( content === null ) {
throw new Error('コンテンツが設定されていないようです。スプレッドシートに追加してください。');
}
// メール送信
sendMail(
content[2], // sender
content[3], // email
content[4], // subject
content[5] // body
);
}
function sendMail(sender, email, subject, body) {
// console.log(`sender: ${sender}`);console.log(`email: ${email}`);console.log(`subject: ${subject}`);console.log(`body: ${body}`);
// メール送信
GmailApp.sendEmail(email, subject, body, { name : sender } );
}
function getContentsByDate(sheet, date, col) {
// 極力APIアクセスを減らすため、スプレッドシートの中身を2次元配列に取得。
const contents = sheet.getDataRange().getValues();
// 1行ずつループして、今日日付のコンテンツが見つかったら配列ごと返却
for (let i=1 ; i<contents.length ; i++) { // 0はヘッダになるので、iの初期値は1としている。
const searchDate = Utilities.formatDate( contents[i][col-1], 'Asia/Tokyo', 'yyyyMMdd');
// console.log(searchDate);console.log(date);
if(searchDate === date) {
return contents[i];
}
}
return null;
}
트리거
마지막으로 스크립트를 매일 실행하기 위한 트리거를 정의하면 완성됩니다.
요점은 이벤트의 소스를 선택을 "시간 주도형"으로 만드는 것입니다. 이렇게 하면 지정한 시각(이번 경우는 오전 7시~8시)에 리마인드 메일을 보내 줍니다.
2
결론
"최근 옛날처럼 굉장히 일할 수 없게 되어 왔구나…"라든가 "배주위에 관록이 나왔구나…
이것을 계기로 근육 트레이닝을 습관화해, 건강한 신체를 손에 넣어 보지 않겠습니까?
계속할 수 있었던 이유로서, 메일로의 리마인드 뿐만이 아니라, 물론 「PRIDE BODY」의 콘텐츠력도 크다고 생각합니다.
매번 바뀌는 것도 아니기 때문에, GAS상에 직접 정의해도 좋네요. ↩
Reference
이 문제에 관하여(근육 트레이닝 습관화를위한 리마인드 메일을 GAS로 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gmath1on/items/850401d86102af8a48b9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(근육 트레이닝 습관화를위한 리마인드 메일을 GAS로 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gmath1on/items/850401d86102af8a48b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)