基本的にほとんどコピペで動くようになっているはず
Slack に Webhook 通知する
const sendWebhook = (webhookUrl, payload) => { const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload), } UrlFetchApp.fetch(webhookUrl, options) } // Attachments を使うと表示名でメンションできる const payload = { text: 'hoge にメンション', attachments: [{ color: '#fff', blocks: [{ type: 'section', text: { type: 'mrkdwn', text: '@hoge' } }], }], } sendWebhook(url, payload)
スプレッドシートを開く
// URL 指定で開くと楽&便利 const spreadSheetUrl = 'https://〜〜〜' const ss = SpreadsheetApp.openByUrl(spreadSheetUrl) // const sheet = ss.getSheetByName(sheetName) などでシートを取得する
TypeScript で書く・ビルドしてデプロイする
スニペットじゃないけど https://github.com/google/clasp が使える
祝日判定
const isHoliday = (date) => { const holidayCalendar = CalendarApp.getCalendarById( 'ja.japanese#holiday@group.v.calendar.google.com' ) const todayEvents = holidayCalendar.getEventsForDay(date) return todayEvents.length > 0 } isHoliday(new Date())
休日(土日)も含めたもの
// 引数は new Date() const isHoliday = (date) => { const day = date.getDay() if (day === 0 || day === 6) { return true } const holidayCalendar = CalendarApp.getCalendarById( 'ja.japanese#holiday@group.v.calendar.google.com' ) const todayEvents = holidayCalendar.getEventsForDay(date) return todayEvents.length > 0 }
Google カレンダーのイベントが終日かどうか判定
Day.js が必要
ID: 1ShsRhHc8tgPy5wGOzUvgEhOedJUQD53m-gd8lG2MOgs-dXC\_aCZn9lFB
複数にまたがった予定も終日判定にできるはず
// 終日かどうか // 引数は Google カレンダーのイベント // (CalendarApp.getCalendarById(calendarId).getEvents(startDate, endDate) で取得可能) const isAllDay = (event) => { // 今日より前に開始 const startDateTime = dayjs.dayjs(event.getStartTime()) const isBeforeStart = startDateTime.isBefore(start) || startDateTime.isSame(start) // 今日より後に終了 const endDateTime = dayjs.dayjs(event.getEndTime()) const isAfterEnd = endDateTime.isAfter(end) || endDateTime.isSame(end) return isBeforeStart && isAfterEnd }