LANG SELRCT

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

2017年12月9日土曜日

Googleカレンダーで特定の条件に当てはまるカレンダーを取得する

特定の条件を設定してそれに当てはまるカレンダーのみを取得するコードの例です

この例では
IDに @group.calendar.google.com が含まれているカレンダーのみを抽出して
その名前とIDをシートに書き出しています


コード.gs
function get_specific_calenders() {
  var calenders = CalendarApp.getAllCalendars();
  var array = [];
  for (var i = 0; i < calenders.length; i++) {
    var id = calenders[i].getId();
    if (id.match(/@group.calendar.google.com/)) {
      var name = calenders[i].getName();
      array.push([name, id]);
    }
  }
  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);
}
意訳
この処理は以下を実行する
すべてのカレンダーを取得して
取得した結果を入れる入れ物を用意して
取得したカレンダーの数だけ以下を繰り返す
カレンダーのidを取得して
もしidに@group.calendar.google.comが入っていたら
名前を取得して
arrayに追加する
入っていなければ何もせずに次のカレンダーを見る

取得した対象のカレンダーたちをset_valuesに渡す


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



関連記事



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