gasでスプレッドシートからカレンダーへ日報を反映する
概要
以下の記事の続きとして、入力時刻をgoogleカレンダーに自動で反映させて可視化する。 マイカレンダーを複数運用していている点に注意する。
googleカレンダーに登録することで、月次の活動の集計に利用する。
やったこと
スプレッドシートに日報を登録する
gasでスプレッドシートからカレンダーへ予定を登録
・スプレッドシートから登録先のカレンダー・タイトル・作業開始・終了日時を取得する
・取得した日時をカレンダーに登録するマクロをインポートし、スプレッドシート上でgasを実行する
・ツール>マクロ>インポートからgasを登録
次にやること
gasのトリガを利用を利用し日次で自動的に集計する
補足
作成したgasは以下
function createEventFromSheet() { // シートを選択 var sheet = SpreadsheetApp.getActiveSheet(); // 行を選択 for(var i = 2; i <= sheet.getLastRow(); i++) { // セルの値を取得 var start = sheet.getRange(i, 1).getValue().toString(); var end = sheet.getRange(i, 2).getValue().toString(); var title = sheet.getRange(i, 3).getDisplayValue().toString(); var name = sheet.getRange(i, 4).getDisplayValue().toString(); // タイトルまたはカレンダー名が未登録の場合、終了する if(title.length <= 0 || name.length <=0) { break; } // 開始と終了の日時を取得。入力形式はYYYY/MM/DD hh:mm var startTime = new Date(start); var endTime = new Date(end); // オプションは必要に応じて var options = { location: "", description: "" } // カレンダーを取得 //var cal = CalendarApp.getDefaultCalendar(); //var cal = CalendarApp.getCalendarById("xxxxx@group.calendar.google.com"); var cal = CalendarApp.getOwnedCalendarsByName(name);//Calendersと配列であることに注意 Logger.log(cal[0]); // カレンダーにイベントを追加 cal[0].createEvent(title, startTime, endTime, options); } }
参考:Google Apps Script - Google Apps Scriptで、GoogleカレンダーのcreateEvent()がうまくいかない|teratail