LANG SELRCT

コードを書く場所についてはこちら

2017年12月9日土曜日

Googleカレンダーでカレンダーのidを指定して予定を取得する

特定のカレンダーの予定を取得してシートに書き出すコードの例です


コード.gs
function get_schedules() {
  var target_id = "CALENDER_ID";
  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 start_row = last_row + 1;
  var start_col = 1;
  var num_rows = array.length;
  var num_cols = array[0].length;
  var range = sh.getRange(start_row, start_col, num_rows, num_cols);
  range.setValues(array); 
}
意訳
この処理は以下を実行する
target_idに取得したいカレンダーのIDを入れて
target_dateを設定する(例ではnew Date()で現在日時を取得)
target_idのカレンダーを取得して
target_dateで指定した日付けの予定を取得する
取得した予定を入れる入れ物を用意する(例ではarrayという名)
取得した予定の数だけ以下を繰り返す
予定のタイトルを取得して
予定の開始日時を取得して
予定の終了日時を取得して
終了日時から開始日時を引いた時間を分で出して
予定の場所を取得して
開始日時をフォーマットして
終了日時をフォーマットして
arrayに入れる

すべての予定を取得したarrayをset_valuesに渡す


この処理は以下を実行する
開いているシートを取得して
データの入っている最終行を取得して
その次の行を入力を開始する行に設定して
入力を開始する列を設定する(例では1列目を指定)
入力する行数はarrayの長さから取得して
入力する列数はarrayの中の1行内のデータ数を取得して
入力を開始する行, 入力を開始する列, 入力する行数, 入力する列数で範囲を指定して
arrayのデータを入力する



関連記事



参考
https://developers.google.com/apps-script/reference/calendar/calendar-app#getCalendarById(String)