乗車予定をスケジューラに登録する(3)

前記事までの作業で、乗車予定を行動予定に変換できたので、今度はスケジューラ(Google Calendar)に登録する。乗車予定から行動予定の変換は一方向の処理(=手動での追加情報は無し)だったが、スケジューラ登録も同様の処理とする。

Google Calendarへの登録は、以前作成したライブラリによる。1件の行動予定データ(timeslot)を1件のイベントとして登録し、登録後に得られるイベントIDを予定データに保存しておく。また、Google Calendar側で説明(description)を変更した場合にのみ、その内容を予定データに反映する。(それ以外の変更は反映しない=一方向の処理。)

  • 画面全体イメージ
    xtsplan03_c01
  • 乗車予定の例
    xtsplan03_c02
  • 行動予定に変換した結果例
    xtsplan03_c04
  • Google Calendarに自動登録した結果例
    xtsplan03_c03_x

コードイメージは以下。

// JavaScript

function syncGCal(isCreateFirst){
  // 
  var idxStart = (isCreateFirst)? 0 : 1;
  var idxEnd = (isCreateFirst)? gCurTimeslots.length : gCurTimeslots.length - 1;
  for (var i = idxStart; i < idxEnd; i++) {
    (function(){
      syncGCal1(gCurTimeslots[i]);
    })();
  }
}

function syncGCal1(aTS){
  var _description = '';
  
  if (aTS.cal_id == '' || aTS.cal_id == 'na') {
    // GCに未登録の場合は新規登録
    gGCalendar.addEventA(aTS.slot_summary, 
      strToDate(aTS.slot_startdate, aTS.slot_starttime),
      strToDate(aTS.slot_enddate, aTS.slot_endtime), 
      aTS.loc_name, _description, function(resp){
        // 登録後返されるデータを処理する
        aTS.cal_id = resp.id; // イベントID
        aTS.cal_seq = resp.sequence; // シーケンス番号	
        // 予定データを更新する
        gDSTimeslot.dbUpd(aTS.slot_key, aTS, function(res_ts){
	
        });
    });

  } else {
    // GCに登録済の場合はイベントデータを取得する
    // イベントデータを取得
    gGCalendar.getEvent(aTS.cal_id, function(xEvent){
      // イベントデータのdescriptionを予定データにコピー
      if (xEvent.description){
        aTS.slot_description = xEvent.description; 
        gDSTimeslot.dbUpd(aTS.slot_key, aTS, function(res_ts){
				
        });
      }
    });
  }
}
カテゴリー: Development タグ: , , , パーマリンク