Calendar

【GAS】標準・その他・祝日のカレンダーをスクリプトで取得する

自分の標準カレンダーを取得する

標準以外のカレンダーをつくる

カレンダーIDからカレンダーを取得する

祝日のカレンダーを取得する

祝日のカレンダーから祝日の名称を取得する

getDefaultCalendar – 自分の標準カレンダーを取得する

自分の標準のカレンダーを操作するにはgetDefaultCalendarメソッドを使います。

const getCalendar = () => {
  const calendarApp = CalendarApp
  const defaultCalendar = calendarApp.getDefaultCalendar()
  const defaultCalendarName = defaultCalendar.getName()
  console.log(defaultCalendarName)
}

実行結果

標準のカレンダーを取得できました。これをデフォルトカレンダーと呼びます。

デフォルトカレンダーってなに?

デフォルトカレンダーとは、自分のGoogleアカウントで利用できる標準のカレンダーです。

標準ってなんじゃ?という話ですよね。

Googleカレンダーでは用途や目的に合わせて標準以外の自分のカレンダーをつくれます。

元からある自分のカレンダーがデフォルトカレンダーです。

↓こういうことです。

赤枠で囲っているのが標準カレンダー(デフォルトカレンダー)です。

その下にTodoリスト、誕生日、練習用とあるのが標準カレンダー(デフォルトカレンダー)以外です。

そのうち、「練習用」と名前のついているのが自分でつくったカレンダーです。これは標準カレンダー(デフォルトカレンダー)ではないです。

カレンダーのつくり方

用途や目的に合わせて標準カレンダー以外のカレンダーをつくることができます。

「練習用」というカレンダーをつくってみましょう。

他のカレンダーの「+」とクリック

「新しいカレンダーを作成」を選択

カレンダーの名前をつけて「カレンダーを作成」をクリック(ここでは名前は「練習用」)

これでオーケーです。

「練習用」カレンダーが追加される

次は、今つくった「練習用」カレンダーを取得します。

getCalendarById – カレンダーIDからカレンダーを取得する

「練習用」カレンダーは標準カレンダーではないのでgetDefaultCalendarでは取得できません。

こういうときはgetCalendarByIdを使います。

const getCalendar = () => {
  const calendarApp = CalendarApp
  const practiceCalendar = calendarApp.getCalendarById('カレンダーIDが入ります')
  const practiceCalendarName = practiceCalendar.getName()
  console.log(practiceCalendarName)
}

実行結果


このように「練習用」カレンダーの名前を取得できました。

では、カレンダーIDはどこにあるのでしょうか?

カレンダーIDはどこにある?

マイカレンダーの一覧で、カレンダー名の右にマウスを持ってくると「・・・」というメニューがあらわれます

ひらいたメニューの「設定と共有」を選択します

「カレンダーの統合」のカレンダーIDをコピーします。(下の画像はIDの一部をマスクしています)

これでカレンダーIDの取得が完了です。

上で書いたコードの「カレンダーIDが入ります」の部分にコピーしたIDをペーストすればオッケー

祝日のカレンダーを取得する

祝日のカレンダーもカレンダーIDから取得します。

祝日のカレンダーIDはここにあります。

「日本の祝日」にマウスカーソルをあわせて「・・・」メニューをクリック

「設定」を選択

「カレンダーの統合」にあるカレンダーIDをコピー

祝日のカレンダーID

ja.japanese#holiday@group.v.calendar.google.com

ではコードに祝日のカレンダーIDを入れます。

const getCalendar = () => {
  const calendarApp = CalendarApp
  const holidayCalendar = calendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com')
  const holidayCalendarName = holidayCalendar.getName()
  console.log(holidayCalendarName)
}

実行結果

これで祝日のカレンダーを取得できました。

取得した祝日のカレンダーから祝日の名称を取得するには?

今回の記事の目的からは外れますが、取得した祝日のカレンダーから祝日の名称を取得してみます。

2024年5月1日から2024年5月31日までの祝日の名称を取得

const getCalendar = () => {
  const calendarApp = CalendarApp
  const holidayCalendar = calendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com')

  const startTime = new Date(2024, 4, 1)
  const endTime = new Date(2024, 5, 0)
  const holidayEvents = holidayCalendar.getEvents(startTime, endTime)
  const holidayNames = holidayEvents.map(holidayEvent => holidayEvent.getTitle())
  console.log(holidayNames)
}

実行結果

getEventsメソッドに取得する予定の範囲(startTimeからendTimeまで)を指定します。

すると、予定の配列(holidayEvents)が取得できます。

mapメソッドで配列から要素を一つずつ取り出し、予定のタイトルをgetTitleメソッドで取得しています。


2024年は「こどもの日 振替休日」があります。

こどもにマジサンキュー。

Copied title and URL