【GAS / Google Apps Script】Googleカレンダーに予定を入れたり出したり!タスク管理も!

Google Apps Script

Googleカレンダーに専用カレンダーを追加して

マイカレンダーの設定を開くと「カレンダーID」があります

予定の追加

function addCalendarEvent() {
  // カレンダー ID を指定。通常は 'primary' でメインカレンダーを指します。
  var calendarId = 'カレンダーID@group.calendar.google.com';
  
  // 予定の詳細
  var eventTitle = 'ミーティング';
  var eventDescription = 'プロジェクトの進捗確認ミーティング';
  var eventLocation = '会議室A';
  var startTime = new Date('2025-01-15T10:00:00');
  var endTime = new Date('2025-01-15T11:00:00');
  
  // 予定の作成
  var event = CalendarApp.getCalendarById(calendarId).createEvent(eventTitle, startTime, endTime, {
    description: eventDescription,
    location: eventLocation
  });
  
  Logger.log('イベントを作成しました: ' + event.getId());
}

問題なく予定追加できました^^

予定の取得

function getCalendarEvents() {
  var calendarId = '@group.calendar.google.com';
  
  // 取得期間を設定(例:今後14日間)
  var now = new Date();
  var oneWeekLater = new Date();
  oneWeekLater.setDate(now.getDate() + 14);
  
  // イベントを取得
  var events = CalendarApp.getCalendarById(calendarId).getEvents(now, oneWeekLater);
  
  // イベント情報をログに出力
  events.forEach(function(event) {
    Logger.log('タイトル: ' + event.getTitle());
    Logger.log('開始時刻: ' + event.getStartTime());
    Logger.log('終了時刻: ' + event.getEndTime());
    Logger.log('説明: ' + event.getDescription());
    Logger.log('場所: ' + event.getLocation());
    Logger.log('---');
  });
}

先ほど入力したものを取得できました

予定の削除

// getCalendarEvents
   events.forEach(function(event) {
    
    Logger.log('タイトル: ' + event.getTitle());
    Logger.log('開始時刻: ' + event.getStartTime());
    Logger.log('終了時刻: ' + event.getEndTime());
    Logger.log('説明: ' + event.getDescription());
    Logger.log('場所: ' + event.getLocation());
    Logger.log('---');
    // ミーティングを削除
    if(event.getTitle().match(/ミーティング/)){
      deleteCalenderById(calendarId, event.getId());
    }
  });
}

function deleteCalenderById(calendarId, eventId){
  var event = CalendarApp.getCalendarById(calendarId).getEventById(eventId);
  if (event) {
    event.deleteEvent();
        Logger.log('イベントを削除しました: ' + eventId);
  }
}

削除できました!

マイタスク作成

マイカレンダーのようにマイタスクを作成します

カレンダーの右上のスイッチで「ToDoリスト」に変更

 新しいリストを作成でtaskdevを作成しました

タスクIDの取得

ブラウザで見てもタスクIDがわからない…

function getTaskLists() {
  // タスクリストを取得
  var taskLists = Tasks.Tasklists.list();

  // タスクリストが存在する場合、一覧をログに出力
  if (taskLists.items && taskLists.items.length > 0) {
    taskLists.items.forEach(function(taskList) {
      Logger.log('タスクリストID: ' + taskList.id);
      Logger.log('タスクリスト名: ' + taskList.title);
      Logger.log('---');
    });
  } else {
    Logger.log('タスクリストが見つかりません。');
  }
}

実行しても Tasks is not defined.

となり、Google 拡張サービスを追加しないとだめでした

Google 拡張サービスを追加

↓スクリプトの左メニューで「サービス + 」です。画像は既にTasksが入っているので表示されています。

Tasks APIを選択して追加

こんな感じで承認画面に権限タスクの表示が加わりました。
追加、取得と進めていくと [ すべてのタスクの作成、編集、整理、削除 ]の承認が必要になります

タクスを追加、取得、削除

上のgetTaskListsで取得した tasklistidを使用します

function addTask() {
  var taskListId = 'RnFJbxxxxxxxlE2Qg'; // デフォルトのタスクリストを使用
  
  var task = {
    title: '新しいタスク',
    notes: 'タスクの詳細説明',
    due: (new Date('2025-01-20')).toISOString() // 期限日
  };
  
  var createdTask = Tasks.Tasks.insert(task, taskListId);
  Logger.log('タスクを作成しました: ' + createdTask.id);
}
function getTasks() {
  var taskListId = 'RnFJbXlLZ0lnMG43blE2Qg'; // デフォルトのタスクリストを使用
  
  var tasks = Tasks.Tasks.list(taskListId);
  
  if (tasks.items && tasks.items.length > 0) {
    tasks.items.forEach(function(task) {
      Logger.log('タスクID: ' + task.id);
      Logger.log('タイトル: ' + task.title);
      Logger.log('メモ: ' + task.notes);
      Logger.log('期限日: ' + task.due);
      Logger.log('完了状態: ' + (task.status === 'completed' ? '完了' : '未完了'));
      Logger.log('---');
    });
  } else {
    Logger.log('タスクがありません。');
  }
}

function deleteTask() {
  var taskListId = '@default'; // デフォルトのタスクリストを使用
  var taskId = 'your-task-id'; // 削除したいタスクの ID を指定
  
  try {
    Tasks.Tasks.remove(taskListId, taskId);
    Logger.log('タスクを削除しました: ' + taskId);
  } catch (e) {
    Logger.log('タスクの削除に失敗しました: ' + e.message);
  }
}

タスクを完了にする

function completeTask() {
  var taskListId = 'Rn111111111111g'; // デフォルトのタスクリストを使用
  var taskId = 'VXF2222222222dw'; // 完了させたいタスクの ID を指定
  
  // タスクを取得
  var task = Tasks.Tasks.get(taskListId, taskId);
  
  if (task) {
    task.status = 'completed';
    var updatedTask = Tasks.Tasks.patch(task, taskListId, taskId);
    Logger.log('タスクを完了にしました: ' + updatedTask.id);
  } else {
    Logger.log('指定されたタスクが見つかりません: ' + taskId);
  }
}

無事完了しました!

お気軽にコメントください!

スパム対応のためコメント認証に数日かかることがありますが、お気軽にコメントいただけると嬉しいです^^

コメント

タイトルとURLをコピーしました