googleカレンダーの予定を指定したメールアドレスに定期的に自動送信 ~Googleスプレッドシート:スクリプトを活用~

googleカレンダーの予定を指定したメールアドレスに定期的に自動送信

私は日頃の予定(スケジュール)を全てGoogleカレンダーに登録して管理しています。

そして、スマホのカレンダーアプリとGoogleカレンダーを同期して、何かあればスマホのカレンダーで自分の予定を確認・更新する使い方をしています。

ただ、念のため、Googleカレンダーに登録している未来(数日先)の予定をリマインドメールとして、自分の携帯のメールアドレス宛てに定期的(自動的)に送信したいなと思いました。

今回やりたいこと:定期的に自動送信するリマインドメールの仕様(動き)

  • 指定したメールアドレス宛てに毎日決まった時間(0時)に自動的にメール送信
  • その際に送信するメールの内容は、今日と明日の予定
  • また、複数のGoogleカレンダーを使っているので、それらを1つにまとめる

今回、それをGoogleスプレッドシートのスクリプト(Google Apps Script)を活用して実装しました。
以下、その際に作ったソースコードですのでご参考下さい。

Googleスプレッドシートのスクリプト(Google Apps Script)のソースコード

以下内容をスクリプトに記述、保存した後、「scheduleMail()」を毎日0時に定期的に動かすようにトリガーの設定をすれば完了。

var honbun = "";
var mailto = "xxx@xxx.zz" //ここに自動配信先のメールアドレスを設定

var dayTbl = new Array("日","月","火","水","木","金","土","日");

var dateToday = new Date();
var day = Utilities.formatDate(dateToday, "GMT+09:00" , "u");
var strToday = Utilities.formatDate(dateToday,"GMT+09:00","yyyy/MM/dd") + "(" + dayTbl[day] + ")";

var dateTomorrow = new Date();
dateTomorrow.setDate( dateToday.getDate() + 1 );
day = Utilities.formatDate(dateTomorrow, "GMT+09:00" , "u");
var strTomorrow = Utilities.formatDate(dateTomorrow,"GMT+09:00","yyyy/MM/dd") + "(" + dayTbl[day] + ")";

var kenmei = strToday + "の予定";

function scheduleMail() {

//予定を取得
honbun += strToday + "\n\n";
getSchedule( dateToday );

//メール送信
MailApp.sendEmail(mailto, kenmei, honbun);
}

//カレンダーの予定を取得する関数(複数のカレンダーを取得可能)
function getSchedule( selectedDate ){

//標準に設定されているカレンダー情報を取得
var cal = CalendarApp.getDefaultCalendar();
getScheduleDetail(cal, selectedDate, '標準');

//指定したカレンダーの情報を取得
var cal = CalendarApp.getCalendarById('xxxxxxx@group.calendar.google.com'); //ここに自分のGoogleカレンダーIDを設定
getScheduleDetail(cal, selectedDate, '○○'); //○○に任意の名称を設定

/*
他にも複数のカレンダー情報を取得したい場合は、以下を繰り返し
var cal = CalendarApp.getCalendarById('xxxxxxx@group.calendar.google.com'); //ここに自分のGoogleカレンダーIDを設定
getScheduleDetail(cal, selectedDate, '○○'); //○○に任意の名称を設定
*/

}

function getScheduleDetail( cal, selectedDate, scheduleName ){

honbun += "■" + scheduleName + "\n";

var events = cal.getEventsForDay(selectedDate);

if(events.length > 0){
for(var i=0; i < events.length; i++){

honbun += "・"

if(!events[i].isAllDayEvent()){ //終日イベント以外の場合は時間帯を表示
var start_time = Utilities.formatDate(events[i].getStartTime(),"GMT+0900","HH時mm分");
var end_time = Utilities.formatDate(events[i].getEndTime(),"GMT+0900","HH時mm分");
honbun += start_time;

if( start_time != end_time ){ //開始と終了の時間が異なる場合のみ終了を表示
honbun += " ~ " + end_time;
}
honbun += " : ";
}

honbun += events[i].getTitle() + "\n";
}
} else {
honbun += "予定はありません\n";
}
honbun += "\n";

}


				

プロフィール(当メディアの運営者 兼 筆者)

保育園協会の園長から「ITで保育業界を変えたい」と相談を受け、保育士と協力し合い、保育以外の業務を自動化し、保育士が保育に専念できる環境を創り上げる。

そして、保育の現場で子ども達の個性=無限の可能性を育む環境に関る中で、大人社会でも同様のことはできないかと考え始めたところ、「こどもも大人も凸凹(違い)を認め合える社会」の実現を目指すNPO法人オトナノセナカに出会い参画する。

現在はNPO活動と並行して、フリーランスエンジニアとして自分が得意とする「IT」x「教育」x「子育て」の分野を中心に活動を開始する。様々な人がお互いを認めて高め合い、創造性が渦巻く楽しい世界を目指して。

プログラミングレッスン・教室、IT研修・教育、ITコンサル・マーケティング、IT(技術)相談・支援、システム開発(WEB・スマホ)、保育園IT化、子ども・子育て関連事業など