Googleカレンダーに登録されているイベント情報(予定)を一覧で取得したいときありませんか?
GAS(Google Apps Script)を用いれば、抽出したい期間を指定し、その期間内のイベントを簡単にスピーディに一覧化することが出来ます。
やってみたいなーと思われたかた、ぜひ参考にこちらの記事をご覧になってくださいー。
こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。ブラック企業努め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますようにの精神で記事書いてます!!
最初にGASの共有
function calendar_schedule_get() {
// コンテナバインドされてるスプレッドシートを取得
let spreadsheet1 = SpreadsheetApp.getActiveSpreadsheet();
// シート名指定でシートを取得
let sheet1 = spreadsheet1.getSheetByName('コンパネ');
let sheet2 = spreadsheet1.getSheetByName('抽出シート');
//『コンパネ』記載のGoogleカレンダーが紐づいているgmailアカウント(カレンダーIDとなる)を取得する。
let calender_ID = sheet1.getRange(1,2).getValue();
//『コンパネ』記載の抽出対象日付の開始日と終了日を取得する。
let startDate = sheet1.getRange(2,2).getValue();
let endDate = sheet1.getRange(3,2).getValue();
// カレンダーIDに基づくGoogleカレンダーを取得する
let calendar = CalendarApp.getCalendarById(calender_ID);
//Googleカレンダーから、開始日~終了日のイベント(予定のこと)を取得する
let myEvents = calendar.getEvents(startDate, endDate);
// イベントの情報を必要な部分のみ『myRecords』配列に格納
const myRecords = myEvents.map(event => {
return [
event.getId(), // ID
event.getTitle(), // タイトル
event.getDescription(), // 詳細
event.getStartTime(), // イベント開始日時
event.getEndTime() // イベント終了日時
]
})
// 『抽出シート』シートに『myRecords』配列を貼り付け
sheet2.getRange(2, 1, myRecords.length, 5).setValues(myRecords);
}
下準備
スプレッドシートとコンテナバインドしたGASでこのプログラムは動くので、下記記事を参考にして、コンテナバインドしたGASを作成してください。
また、このプログラムを動かす前に、下準備としてスプレッドシートに2つのシートを用意してください。
一つは、『コンパネ』シートです。
B1セルには、Gmailを記入しておいてください。(****************@gmail.com)
情報保護のため、上の図では白背景に白字として見えなくしてあります。
B2セル、B3セルには日付形式で開始日と終了日を記載してください。
もうひとつは、『抽出シート』シートです。
今回は、『ID』『タイトル』『詳細』『開始日時』『終了日時』を抽出するので、その見出しを作成しておきます。
この2行目からずらずらと一覧化されます。
抽出したいカレンダーの内容
よくあるカレンダーの内容をサンプルで用意して見ました。この内容をすべて一覧化するというGASを作成しました。『終日』指定されている、有給というのも用意してみましたので、どのような抽出データになるか、後で説明します。
プログラム動作後の『抽出シート』の内容
本来ですと、A列にもIDが記載されるのですが、情報保護の観点から、白字白背景とし、見えなくしてあります。
このような形で、イベント(予定)が一覧化されます。
『有給』のように、終日しているイベントについては、当該日付の0時から、翌日の0時までというイベントとして記録されるようです。
まとめ
Googleカレンダーの情報をスプレッドシートに一覧化する方法をお伝えしました。
一覧化することで、予定がヌケモレないか、週報等で来週の予定を共有することが簡単にできるようになります。
活用してみてくれると嬉しいです。