Apps Script公式リファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2017年12月9日土曜日

Googleカレンダーで今日の予定を取得する

自分のカレンダーの今日の予定を取得するコードの例です


コード.gs
function get_schedules() {
  var email = Session.getActiveUser().getEmail();
  var target_id = email;
  var target_date = new Date();
  var calender = CalendarApp.getCalendarById(target_id);
  var schedules = calender.getEventsForDay(target_date);
  var array = [];
  for (var i=0; i < schedules.length; i++) {
    var title = schedules[i].getTitle();
    var start_time = schedules[i].getStartTime();
    var end_time = schedules[i].getEndTime();
    start_time = Utilities.formatDate(start_time, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm');
    end_time = Utilities.formatDate(end_time, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm');
    var location = schedules[i].getLocation();
    array.push([title, start_time, end_time, location]);
  }
  Logger.log(array);
}
意訳.gs
この処理は以下を実行する
スクリプトを実行しているユーザのemailアドレスを取得して
target_idに入れる
target_dateを設定する(例ではnew Date()で現在日時を取得)
target_idのカレンダーを取得して
target_dateで指定した日付けの予定を取得する
取得した予定を入れる入れ物を用意する(例ではarrayという名)
取得した予定の数だけ以下を繰り返す
予定のタイトルを取得して
予定の開始日時を取得して
予定の終了日時を取得して
開始日時をフォーマットして
終了日時をフォーマットして
予定の場所を取得して
arrayに入れる

すべての予定を取得したarrayをログに出す




おまけ


予定をシートに書き出す場合

以下のコードの例では
開始時間と終了時間から予定時間を分で計算して出して
開催場所も取得しています


コード.gs
function get_schedules() {
  var email = Session.getActiveUser().getEmail();
  var target_id = email;
  var target_date = new Date();
  var calender = CalendarApp.getCalendarById(target_id);
  var schedules = calender.getEventsForDay(target_date);
  var array = [];
  for (var i=0; i < schedules.length; i++) {
    var title = schedules[i].getTitle();
    var start_time = schedules[i].getStartTime();
    var end_time = schedules[i].getEndTime();
    var duration = (end_time - start_time) / (1000 * 60);
    var location = schedules[i].getLocation();
    start_time = Utilities.formatDate(start_time, 'Asia/Tokyo', 'yyyy/MM/dd-HH:mm')
    end_time = Utilities.formatDate(end_time, 'Asia/Tokyo', 'yyyy/MM/dd-HH:mm');
    array.push([title, start_time, end_time, (duration + "min"), location]);
  }
  set_values(array);
}

function set_values(array){
  var sh = SpreadsheetApp.getActiveSheet();
  var last_row = sh.getLastRow();
  var row = last_row + 1;
  var range = sh.getRange("A" + row + ":E" + (array.length + last_row));
  range.setValues(array); 
}




おまけ2


指定した日付けの予定を取得したい場合

var target_date = new Date();

のところで

var target_date = new Date("2017/12/31");

などと日付けを指定すると
その日の予定を取得できます


補足

共有されている他のユーザのカレンダーを取得する場合は、そのユーザのカレンダーを追加して、そのIDを設定すると取得できます

他のユーザーの Google カレンダーを追加する
https://support.google.com/calendar/answer/37100?co=GENIE.Platform%3DDesktop&hl=ja



参考
https://developers.google.com/apps-script/reference/calendar/

Latest post

Google Apps Scriptの障害時はIssueTrackerを見てみる - Incidents for Apps Script are reported on Issue Tracker

IssueTracker > Apps Script issues https://issuetracker.google.com/savedsearches/566234 Google Apps Scriptの障害時は IssueTracker に課題が上がっていることが...