【Google Apps Script(GAS)】Googleカレンダー×スプレッドシート連携【業務効率化】
Googleアプリ操作の自動化が簡単にできるGoogle Apps Script(GAS)
これを抑えておけば業務効率がグッとアップします🙆♀️
今回はGoogleカレンダー×スプレッドシートの連携方法を解説しました!是非これを機会にGAS習得しちゃいましょう~~!
◎動画はこちら
❶スプレッドシートの内容でカレンダー一括登録
function createEvent() {
//スプレッドシートからデータを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("★ここにシート名を記載★")
var rows = sheet.getLastRow()-1;
var datas = sheet.getRange(2,1,rows,8).getValues();
//カレンダーを取得(★プロパティにcalendarIDを設定する必要あり、動画で解説してます)
var id = PropertiesService.getScriptProperties().getProperty("calendarID");
var calendar = CalendarApp.getCalendarById(id);
//スプレッドシートの各行に対して繰り返し
datas.forEach(function(data){
//設定項目を取り出し
var title = data[0];
var allday = data[1];
var start = data[2];
var end = data[3];
var description = data[4];
var location = data[5];
var guests = data[6];
var sendInvites = data[7];
//イベントのoptionsを宣言
var options = {
description:description,
location:location,
guests:guests,
sendInvites:sendInvites
}
//イベント種別が終日か否かで条件分岐(使うべきmethodが異なるため)
if(allday == true){
var event = calendar.createAllDayEvent(title,start,options);
} else {
var event = calendar.createEvent(title,start,end,options);
}
//ゲストに編集権限を付与
event.setGuestsCanModify(true);
});
}
❷カレンダー登録情報をスプレッドシートに書き出し
function getEvents() {
//カレンダーを取得(★プロパティにcalendarIDを設定する必要あり、動画で解説してます)
var id = PropertiesService.getScriptProperties().getProperty("calendarID");
var calendar = CalendarApp.getCalendarById(id);
//当日に設定されているイベントデータを取得
var events = calendar.getEventsForDay(new Date());
//結果を格納する配列を宣言
var values = [];
//各イベントデータに対して繰り返し
events.forEach(function(event){
//各項目のデータを取り出し
var title = event.getTitle();
var start = event.getStartTime();
var end = event.getEndTime();
var allday = event.isAllDayEvent();
var description = event.getDescription();
var location = event.getLocation();
var guests = event.getGuestList(); //ゲストデータが配列に格納される
var guests_email = []; //ゲストのアドレスデータを格納する配列を宣言
//各ゲストデータに対して繰り返し
guests.forEach(function(guest){
var email = guest.getEmail(); //アドレスを取得
guests_email.push(email); //配列guests_emailに結果を格納
});
//配列データをカンマ(,)区切りの1つの文字列に変換
guests_email = guests_email.join(",");
//配列valuesに取得した各データを格納
values.push([title,allday,start,end,description,location,guests_email]);
});
//スプレッドシートにデータを書き込み
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("★ここに結果を書き込みたいシート名を記載★");
sheet.getRange(2,1,values.length,values[0].length).setValues(values);
}
❸
❸カレンダーイベントのハングアウトリンクを取得
function getEvents_api() {
//スプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("★ここにシート名を記載★");
//スプレッドシートに記載してある日付データを取得
var start = sheet.getRange(2,1).getValue().toISOString();
var end = sheet.getRange(2,2).getValue().toISOString();
//カレンダーIDを取得(★プロパティにcalendarIDを設定する必要あり、動画で解説してます)
var id = PropertiesService.getScriptProperties().getProperty("calendarID");
//カレンダーに登録されているイベントデータを取得
var events = Calendar.Events.list(id,{
timeMin:start,
timeMax:end,
singleEvents:true,
orderBy:'startTime',
maxResults:2500
});
//取得したデータからアイテムデータを取り出し
var items = events.items;
//結果を書き込む配列を宣言
var values = [];
//各アイテムに対して繰り返し
items.forEach(function(item){
//各項目データを取り出し
var title = item.summary;
var hangoutLink = item.hangoutLink;
var start_dateTime = item.start.dateTime;
//日付データの書式を変換
if(start_dateTime == null){
var start = Utilities.formatDate(new Date(item.start.date),"Asia/Tokyo","yyyy/MM/dd 00:00:00");
var end = Utilities.formatDate(new Date(item.end.date),"Asia/Tokyo","yyyy/MM/dd 00:00:00");
} else {
var start = Utilities.formatDate(new Date(item.start.dateTime),"Asia/Tokyo","yyyy/MM/dd HH:mm:ss");
var end = Utilities.formatDate(new Date(item.end.dateTime),"Asia/Tokyo","yyyy/MM/dd HH:mm:ss");
}
//配列valuesに結果を格納
values.push([title,start,end,hangoutLink]);
});
//スプレッドシートに結果を書き込み
sheet.getRange(2,4,values.length,4).setValues(values);
}
GASの基礎学習にはUdemyがおすすめです!(徹底解説してます!)
この記事が気に入ったらサポートをしてみませんか?