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を割り当ててください)
コメント
スプレッドシートにどうやったら出力できるか悩んでいたので大変助かりました!
最後の「スプレッドシートに貼り付け」のところでエラーが起こり、スケジュールを書き出してもらえません。
どうしたらいいでしょうか?