見出し画像

GASでGoogleカレンダーに終日予定を作ったり消したりする

プライベートの予定表だと一旦時間は気にせずざっくりいれることが多いので、今回は終日予定の作成と削除についてメモ。
Gmailからの予定を自動的に作成できるように、『LINEでこういうフォーマットで投稿されたら自動作成する』みたいなことが後々できればいいなぁとか思いつつ。

最終イメージ

カレンダーに予定を作成する

  1. カレンダーを取得する(自分用なのでgetDefaultCalendar()を使う)

  2. タイトル・日付を指定して予定を作成する

基本的な終日予定の作成

function myFunction() {
  const date = new Date(2025, 4, 12);
  const calendar = CalendarApp.getDefaultCalendar();
  calendar.createAllDayEvent('予定あり', date);
}

複数日にわたる終日予定の作成

endDateに終了日を記入すると1日前までの登録になるので注意が必要。
13日を終了日としたい場合は14日のDateを渡さないといけないらしい。

function myFunction() {
  const startDate = new Date(2025, 4, 12);
  const endDate = new Date(2025, 4, 14);
  const calendar = CalendarApp.getDefaultCalendar();
  calendar.createAllDayEvent('予定あり(二日間)', startDate, endDate);
}

タイトル以外の情報も設定したい場合

渡すことができる値。

  • description - 説明

  • location - 場所

  • guests - 参加するゲストのメールアドレス

  • sendInvitesBoolean - 招待メールを送信するか否か(default: false)

プライベートカレンダーに誰かを呼ぶことはほとんどないので一旦説明と場所だけで設定する。

function myFunction() {
  const date = new Date(2025, 4, 12);
  const calendar = CalendarApp.getDefaultCalendar();
  const options = {
    description: '◯◯のイベントに参加する',
    location: '渋谷',
  }
  calendar.createAllDayEvent('予定あり', date, options);

  // 複数日にわたる場合も同じようにできる
  // const endDate = new Date(2025, 4, 14);
  // calendar.createAllDayEvent('予定あり(二日間)', date, endDate, options);
}
詳細を設定した場合のイメージ

カレンダーから予定を削除する

  1. カレンダーを取得する(自分用なのでgetDefaultCalendar()を使う)

  2. 削除したい予定を取得する

  3. 削除したい予定を削除する

基本的な予定の削除

function myFunction() {
  const date = new Date(2025, 4, 12);
  const calendar = CalendarApp.getDefaultCalendar();
  const events = calendar.getEventsForDay(date);
  for (let i = 0; i < events.length; i++) {
    const event = events[i];
    event.deleteEvent();
  }
}

取ってきた予定に対してdeleteEvent()を使うという感じなので、終日か終日ではないかは関係なさそう。
上の処理だとその日ある予定を全て消しちゃうことになるので、タイトルや内容で削除するかなど分岐させてあげるのが良さそう。

複数日の予定を削除する

この日からこの日まで消したいんよ、という場合はこっちを参照。
作成と同じく、14日を渡すと13日までの予定が削除されるので注意。

function myFunction() {
  const startDate = new Date(2025, 4, 12);
  const endDate = new Date(2025, 4, 14);
  const calendar = CalendarApp.getDefaultCalendar();
  const events = calendar.getEvents(startDate, endDate);
  for (let i = 0; i < events.length; i++) {
    const event = events[i];
    event.deleteEvent();
  }
}

定期的な予定の場合は、createAllDayEventSeries()やdeleteEventSeries()などそれに対応したAPIを利用する必要があるので別途投稿する予定。


この記事が気に入ったらサポートをしてみませんか?