-
-
Save sam-ple/2ffaaf66087d954ad23f59ff9c1e12e1 to your computer and use it in GitHub Desktop.
誕生日の操作(メール、取得、追加、削除)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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