Google Apps Scriptを使って、Googleカレンダーからイベントを抽出し、スプレッドシートに出力してみました。
完成品
searchシートに、イベントを検索する日時の範囲(From、To)を入力

スクリプトを実行すると、抽出結果がスプレッドシートに出力される


スクリプト
スプレッドシートのツール > スクリプトエディタよりスクリプトエディタを起動し、コード.gsに下記のスクリプトを貼り付けます。
// カレンダー・スプレッドシートの取得
const calendar = CalendarApp.getCalendarById("xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com");
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("search");
function getEvents(){
// スプレッドシートをクリア
sheet.getRange("A5:G").clear();
// スプレッドシート入力値を取得
const dtFrom = sheet.getRange("B1").getValue();
const dtTo = sheet.getRange("B2").getValue();
// カレンダーからイベントを取得
const events = calendar.getEvents(
dtFrom ? dtFrom : new Date( new Date().getFullYear(), 0 ),
dtTo ? dtTo : new Date( new Date().getFullYear() + 1, 0 )
);
// イベントの情報を配列に格納
const records = events.map(event => {
return [
event.getId(), // イベントID
event.getTitle(), // タイトル
event.getStartTime(), // 開始日時
event.getEndTime(), // 終了日時
event.getDescription(), // 説明
event.getLocation(), // 場所
event.getGuestList().map(guest =>
guest.getEmail()
).join(",") // ゲストのEmail(カンマ区切り)
]
})
// スプレッドシートに貼り付け
sheet.getRange(5, 1, records.length, 7).setValues(records);
}
*コード冒頭の”xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com”部分には、イベントを登録したいカレンダーのIDを入力してください。(Googleカレンダーの「設定と共有」画面の「カレンダーの統合」部分にあるカレンダーIDです)
その後、スクリプトエディタの▷実行で実行します。
(もしくは、スプレッドシート上に図形描画でボタンを配置して、スクリプトを割り当てでgetEventsを割り当ててください)
コメント
スプレッドシートにどうやったら出力できるか悩んでいたので大変助かりました!
最後の「スプレッドシートに貼り付け」のところでエラーが起こり、スケジュールを書き出してもらえません。
どうしたらいいでしょうか?