番外編。
GAS(Google Apps Script)でGoogleカレンダーの操作をしてみるも、いろいろハマったので備忘メモ。
①日付指定
複数日の終日指定では、終了日は+1日の加算が必要。
他のスケジューラから抜き出したデータを食わせようとしてハマった。
[試し登録コード]
var calendar = CalendarApp.getDefaultCalendar(); var title = "予定タイトル" ; var option = { description: "スケジュール内容記述です", location: "場所記述です" , } ; var startDate = new Date("2019/12/03 03:00") ; var endDate = new Date("2019/12/05 17:00") ; //1日終日スケジュール登録 calendar.createAllDayEvent(title, startDate, option) ; //時間は無視される //複数日終日スケジュール登録 → 12/3~12/4の2日予定となる calendar.createAllDayEvent(title, startDate, endDate, option) ; //時間は無視される //終日でない複数日スケジュール登録 →AllDayでないので、日付・時間通りの登録 calendar.createEvent(title, startDate, endDate, option) ; //指定した日付と時間で登録される
[結果]
[終日予定の結論]
終日予定は、元スケジューラの終了日に+1日して登録。
※月またぎもあるので、日付を+1日するには以下が便利。
endDate.setDate(endDate.getDate() +1) ; //endDateの「日付」を取り出して、+1日して再セット
② 「予定の通知」の設定
登録したスケジュール全てに「10分前通知」の設定がされてしまう。
GASのAPIを探したが、「予定の通知」のパラメータが見つからずウロウロ。
→「予定の通知」の設定 はGASのCalendarAPIからは設定できない。
登録先カレンダー毎の「設定」の「予定の通知」の設定に沿って、
スケジュール登録時に自動設定されることが判明。
リファレンスをよく読みましょう (-o-)/
③カレンダー一覧取得
自分の操作/表示できるカレンダーは、以下でcalendarオブジェクトの配列として取得できる。
var calendars = CalendarApp.getAllCalendars() ;
・デフォルトカレンダーは、Googleカレンダーでの表示はアカウントの「名前」だが
calendars配列に返るカレンダー名calendars[i].getName()はアカウントのID(メールアドレス形式の ***@gmail.com)
・複数のカレンダーを使用している場合、デフォルトカレンダー (***@gmail.com)がcalendars配列の1番目に来るとは限らない
・他ユーザのカレンダーを共有している場合、そのカレンダーもcalendars配列に含まれる
・日本語で「名前」を付けたカレンダーはそのまま日本語文字列でカレンダ名が返る
・設定で「カレンダーリストに表示しない」としたものはcalendars配列に返らない
カレンダー画面の左側メニューでチェック☑を外しただけのカレンダーはcalendars配列には含まれる
・「ToDoリスト」「リマインダー」はカレンダーにオーバーレイ表示できるが、calendars配列には返らない
覚え書き。
.