見出し画像

【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がおすすめです!(徹底解説してます!)



この記事が気に入ったらサポートをしてみませんか?