iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
IT 管理

30 天玩轉 GAS: 打造你的個人自動化助手系列 第 25

[Day 25] GAS - Calendar API:建立和管理日曆活動

  • 分享至 

  • xImage
  •  

如果你經常需要管理日程安排、設定會議或是發送提醒通知,每次手動設定讓你感到厭煩了嗎?
讓我用 GAS 搭配 Google Calendar API 來自動化建立與管理日曆活動吧!
透過 Google Calendar API, 我們可以實現建立活動、更新活動內容、刪除活動,甚至查詢活動列表等等
讓我們看看可以怎麼做吧!

建立日曆活動 CalendarApp.createEvent()

你可以使用 CalendarApp.createEvent() 方法來建立新活動。此方法需要指定活動名稱、開始時間、結束時間,還可以加入一些選填項目。

function createCalendarEvent() {
  // 取得預設日曆
  const calendar = CalendarApp.getDefaultCalendar();

  // 設定活動名稱與時間
  const eventTitle = 'GAS 技術分享會';
  const startTime = new Date('Oct 11, 2024 10:00:00'); // 早上10點
  const endTime = new Date('Oct 11, 2024 12:00:00');   // 中午12點

  // 建立活動
  const event = calendar.createEvent(eventTitle, startTime, endTime);
  
  Logger.log('活動建立成功:' + event.getId());
}

https://ithelp.ithome.com.tw/upload/images/20241008/20137680MTHjNwZVlL.png

進階活動設定:新增活動描述、地點、邀請參加者

如果你需要添加更多資訊,例如活動描述、地點、邀請參加者等,可以使用額外的選項來建立更詳細的活動。

function createDetailedEvent() {
  const calendar = CalendarApp.getDefaultCalendar();
  
  const eventTitle = '技術工作坊';
  const startTime = new Date('Oct 11, 2024 10:00:00'); // 早上10點
  const endTime = new Date('Oct 11, 2024 12:00:00');   // 中午12點

  // const startTime = new Date(2024, 10, 1, 9, 0);
  // const endTime = new Date(2024, 10, 1, 17, 0);
  
  // 設定活動的詳細資訊
  const event = calendar.createEvent(eventTitle, startTime, endTime, {
    description: 'GAS 技術工作坊活動',
    location: '台北市信義區101大樓',
    guests: 'guest1@example.com, guest2@example.com',
    sendInvites: true
  });

  Logger.log('詳細活動建立成功:' + event.getId());
}

https://ithelp.ithome.com.tw/upload/images/20241008/201376804z5MHzB1xW.png

查詢日曆活動 .getEvents(startTime, endTime)

你可以使用 CalendarApp.getEvents() 方法查詢指定時間範圍內的所有活動。例如,查詢某天的所有活動:

function getCalendarEvents() {
  const calendar = CalendarApp.getDefaultCalendar();
  
  const startTime = new Date(2024, 9, 25, 0, 0); // 當天的開始時間
  const endTime = new Date(2024, 9, 25, 23, 59); // 當天的結束時間

  const events = calendar.getEvents(startTime, endTime);
  
  if (events.length > 0) {
    events.forEach(event => {
      Logger.log('找到活動:' + event.getTitle() + ',開始時間:' + event.getStartTime());
    });
  } else {
    Logger.log('沒有找到任何活動');
  }
}

https://ithelp.ithome.com.tw/upload/images/20241008/20137680n0Q5ceL7vj.png

更新活動內容 event.setTitle event.setTime

如果活動有任何變動,你可以使用 setTitle()setTime() 等方法來更新活動的內容。以下範例將活動名稱與時間更新:

function updateCalendarEvent(eventId) {
  const calendar = CalendarApp.getDefaultCalendar();
  
  // 透過活動 ID 查找活動
  const event = calendar.getEventById(eventId);
  
  if (event) {
    // 更新活動名稱和時間
    event.setTitle('更新後的技術分享會');
    event.setTime(new Date(2024, 9, 25, 11, 0), new Date(2024, 9, 25, 13, 0));
    
    Logger.log('活動已更新:' + event.getId());
  } else {
    Logger.log('未找到活動');
  }
}

https://ithelp.ithome.com.tw/upload/images/20241008/20137680t59Ik8Q61j.png

刪除活動 event.deleteEvent()

當你不再需要某個活動時,可以使用 deleteEvent() 方法將它從日曆中移除。

function deleteCalendarEvent(eventId) {
  const calendar = CalendarApp.getDefaultCalendar();
  
  const event = calendar.getEventById(eventId);
  
  if (event) {
    event.deleteEvent();
    Logger.log('活動已刪除:' + eventId);
  } else {
    Logger.log('未找到活動');
  }
}

今天我們學習了如何透過 Google Apps Script 操作 Google Calendar API
實現日曆活動的建立、查詢、更新和刪除功能!明天來教教大家如何自訂側欄 Sidebar!


上一篇
[Day 24] GAS - Google Drive 實戰演練 - 雲端硬碟清理小幫手
下一篇
[Day 26] GAS - 你知道什麼是 Sidebar (自訂側欄) 嗎?
系列文
30 天玩轉 GAS: 打造你的個人自動化助手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言