GASを使ってGoogleカレンダーの予定に色をつけるようにしてみた
GASを使って普段使っているGoogleカレンダーの内容で色つける機能にしてちょっとハックしようと思いました
予定ができた時にスマホからとりあえず予定だけ入れているのですが、行き方とか最寄駅を調べないと行けなかったりするのでそれを確認してないぞ、って場合に色を変更しようと思っています
# GASの環境構築
npm init -y
npm install @google/clasp -g
npm install @types/google-apps-script
clasp login
clasp open
# リモートコードをローカルに
clasp pull
# ローカルコードをリモートに送信
clasp push
main.js
function main() {
const startDate = new Date(get_current_date()); // The first date to remove the guest from the events
const endDate = new Date(get_next_month_date()); // The last date to remove the attendee from the events
const calender = CalendarApp.getCalendarById('自分のカレンダーID');
const events = calender.getEvents(startDate, endDate);
// カレンダーをアップデート
calender_description_empty(events);
calender_still_default(events);
}
function calender_description_empty(events) {
/*
予定を入れただけのイベントにデフォルトを設定する
@param events カレンダーイベントの配列
*/
const schema = schemas();
for (let i = 0; i < events.length; i++) {
let event = events[i];
if (!event.getDescription()) {
event.setDescription(
`def!
出発時刻: ${schema.default_calender_description.departure_time}
最寄駅: ${schema.default_calender_description.nearest_station}
説明: ${schema.default_calender_description.description}
`
);
}
}
}
function calender_still_default(events) {
/*
予定を入れただけのイベントにデフォルトに色を設定する
@param events カレンダーイベントの配列
*/
for (let i = 0; i < events.length; i++) {
let event = events[i];
console.log(CalendarApp.EventColor.YELLOW)
console.log( event.getDescription().includes("def!"))
if (
event.getColor() !== CalendarApp.EventColor.YELLOW &&
event.getDescription().includes("def!")
) {
event.setColor(CalendarApp.EventColor.YELLOW);
}
}
}
schema.js
function schemas() {
return {
default_calender_description: {
def: "def",
nearest_station: "", // 最寄駅
departure_time: "", // 出発時刻
description: "", // 説明
}
};
}
lib.js
function get_current_date() {
/*
実行日の日付を取得 yyyy-mm-dd
*/
return new Date().toLocaleDateString('sv-SE')
}
function get_next_month_date() {
/*
実行日の翌月の日付を取得 yyyy-mm-dd
*/
const d = new Date(new Date().toLocaleDateString())
d.setMonth(d.getMonth() + 1)
return d.toLocaleDateString('sv-SE')
}
実行日から1ヶ月後までの予定を取得して、descriptionが空だったら色をつけるっていう内容です
他にカスタムする場合はGoogleカレンダーのdocを参照ください
https://developers.google.com/apps-script/reference/calendar/calendar-event?hl=ja
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント