Skip to content

Instantly share code, notes, and snippets.

@sam-ple

sam-ple/code.gs Secret

Last active June 18, 2019 10:37
Show Gist options
  • Save sam-ple/2ffaaf66087d954ad23f59ff9c1e12e1 to your computer and use it in GitHub Desktop.
Save sam-ple/2ffaaf66087d954ad23f59ff9c1e12e1 to your computer and use it in GitHub Desktop.
誕生日の操作(メール、取得、追加、削除)
var calendar = CalendarApp.getCalendarById('********');
var events = calendar.getEvents(new Date('2019/01/01'), new Date('2019/12/31'));
function mailEvents() {
var date= new Date();
var startDate=new Date(date);
startDate.setDate(startDate.getDate()+0);
var endDate=new Date(date);
endDate.setDate(endDate.getDate()+31); 
var events = calendar.getEvents(startDate,endDate);
var content = "今日から1ヶ月以内の誕生日のお知らせ。\n\n" ;
var no=1;
for each(var evt in events){
content += "■"
content += evt.getStartTime().getMonth()+1;
content += "月" + evt.getStartTime().getDate() + "日\n";
content += evt.getTitle().replace("[誕]","") + "さん\n\n";
no++;
}
var to = "test@sam-ple.net";
var subject = "誕生日のお知らせ(" + Utilities.formatDate(new Date(), "Asia/Tokyo", "MM") + "月" + Utilities.formatDate(new Date(), "Asia/Tokyo", "dd") + "日)";
MailApp.sendEmail(to, subject, content, { name: '誕生日' });
}
// イベントを取得
function getEvents() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("取得");
for (var i=0; i < events.length; i++) {
var title = events[i].getTitle();
var day = events[i].getStartTime()
sheet.getRange(i+2,1).setValue(title);
sheet.getRange(i+2,2).setValue(day);
}
}
// イベントを登録
function addEvents(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("誕生日");
for(i = 2; i <= sheet.getLastRow(); i++){
var status = sheet.getRange(i,1).getValue();
if(status == "登録する"){
var title = sheet.getRange(i,2).getValue();
var day = sheet.getRange(i,3).getValue();
calendar.createAllDayEvent(title,day);
sheet.getRange(i,1).setValue("登録完了");
}
}
}
// イベントを削除
function delEvents(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("誕生日");
for(i = 2; i <= sheet.getLastRow(); i++){
var status = sheet.getRange(i,1).getValue();
if(status == "削除する"){
var title = sheet.getRange(i,2).getValue();
for(var n=0; n<events.length; n++){
if (events[n].getTitle() == title){
events[n].deleteEvent();
break;
}
}
sheet.getRange(i,1).setValue("削除完了");
}
}
}
// イベントを全削除
function delAllEvents() {
for(var i=0; i<events.length; i++){
if (events[i].getTitle().match("[誕]")){
events[i].deleteEvent();
}
}
}
// スプレッドシートを開いた時にメニューを作成
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
//メニュー配列
var myMenu=[
{name: "誕生日を取得", functionName: "getEvents"},
null,
{name: "誕生日を登録", functionName: "addEvents"},
null,
{name: "誕生日を削除", functionName: "delEvents"},
null,
{name: "誕生日を全削除", functionName: "delAllEvents"},
];
sheet.addMenu("スクリプト実行", myMenu);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment