日報用にgoogleカレンダの予定を取得する
日報にMTGの時間や内容を記載する必要があり複数予定があると面倒だった為、一覧で取得できるようにしました。
実際は作業内容とマージして日報のフォーマットに合わせていますが、
今回はgoogleカレンダーの情報を取得する箇所を抜き出しています
gas側
スクリプト画面を開く
タイムゾーンの設定
googleカレンダーのタイムゾーンを設定する。gasの画面の歯車の「設定」ボタンをクリック
コード作成
・スクリプトの画面の<>のボタンをクリックし、+ボタンをクリックする
カレンダーIDの箇所は、基本はメールアドレスです。
確認したい場合は、カレンダーの設定画面の「マイカレンダーの設定」の「カレンダー統合」をクリックしてカレンダー IDを確認してください
// 今日と明日の予定を取得する
function getGoogleCalendarTodayNext() {
var mySheet = SpreadsheetApp.getActiveSheet();
getGoogleCalendar(new Date(mySheet.getRange('A2').getValues()), 'B2');
getGoogleCalendar(new Date(mySheet.getRange('A3').getValues()), 'B3');
}
// googleカレンダー取得
function getGoogleCalendar(targetDate, sellNm) {
const calendarId = 'xxxx@gmail.com';// カレンダーID(基本はメールアドレス「マイカレンダーの設定」の「カレンダー統合」をクリックして確認してください)
var mySheet = SpreadsheetApp.getActiveSheet();
let calendar = CalendarApp.getCalendarById(calendarId);
var events = calendar.getEventsForDay(targetDate);
if (events == null){
Browser.msgBox("カレンダー情報はありません");
} else {
var message = '';
for (key in events) {
event = events[key];
message = message + ' ・' + event.getTitle() + '(' +
Utilities.formatDate( event.getStartTime(), 'Asia/Tokyo', 'HH:mm') + '~' +
Utilities.formatDate( event.getEndTime(), 'Asia/Tokyo', 'HH:mm') + ')\n';
}
mySheet.getRange(sellNm).setValue(message);
}
}
スブレットシート側
・B2のセルに「=today()」と入力
・B3のセルに「=WORKDAY(A2,1」と入力(祝日を設定したい場合、第三引数に範囲を設定する)
・[挿入][図形描画]でカレンダ取得のボタンを作成する
・先ほど作成した関数の「getGoogleCalendarTodayNext」を割り当てる
以上、簡単ですが、googleカレンダーの情報取得でした。