見出し画像

Googleスプレッドシートで業務を効率化(8):やったことリストを作って達成感を感じ続ける方法

今回利用したスクリプトのコードになります。動画の中で使い方を説明していますのでぜひご活用ください。

function onOpen() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();

 var subMenus = [];
 subMenus.push({
   name: "カレンダー連携", // ここの"..."を変えても良いです。
   functionName: "createSchedule"
 });
 ss.addMenu("*マイスクリプト*", subMenus); // ここの"..."を変えても良いです。
}

function createSchedule() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

 const gAccount = "aaaaaaa@gmail.com";  /* 設定箇所:ご利用のメールアカウント */
 const topRow = 2;
 const lastCol = 4;

 const dayCol = 0;
 const startTimeCol = 1;
 const endTimeCol = 2;
 const todoCol = 3;

 var lastRow = sheet.getLastRow();
 var contents = sheet.getRange(topRow, 1, lastRow, lastCol).getValues();

 var cals = CalendarApp.getAllCalendars();
 var calendarName = 'マイカレンダー'; /* 設定箇所:カレンダー名 */
 var calendar = getCalendarByName(cals, calendarName);
 if(calendar == null) {
   CalendarApp.createCalendar(calendarName);
   cals = CalendarApp.getAllCalendars();
   calendar = getCalendarByName(cals, calendarName);
 }

 for (i = 0; i <= lastRow - topRow; i++) {
   var day = new Date(contents[i][dayCol]);
   var startTime = contents[i][startTimeCol];
   var endTime = contents[i][endTimeCol];
   var todo = contents[i][todoCol];
   
   try {
     var startDate = new Date(day);
     startDate.setHours(startTime.getHours())
     startDate.setMinutes(startTime.getMinutes());
     var endDate = new Date(day);
     endDate.setHours(endTime.getHours())
     endDate.setMinutes(endTime.getMinutes());
     calendar.createEvent(
       todo,
       startDate,
       endDate
     );
   } catch(e) {
     Logger.log(e);
   }  
 }
 Browser.msgBox("完了");
}

function getCalendarByName(calendars, name){
 for(var i=0; i<calendars.length; i++){
   if(calendars[i].getName() == name)
     return calendars[i];
 }
 return null;
}

インストールがうまくいかない!などにつきましては以下のサイトからお気軽にお問い合わせください。


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