ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
スプレッドシートからGoogleカレンダーに予定を流し込む(インポート、連携する)方法
スプレッドシートに記載した予定をGoogleカレンダーに連動させることができます。
「GASって何?」状態であってもコピペで簡単にできます。
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- GASによるGoogleカレンダーの削除や変更方法がわかります。
- スプレッドシートから登録した予定を変更することが可能になります。
なので、動画をご覧いただき
と答えてあげてください。
動画はこちら
イベントの取得
イベントIDの取得
//今日のイベントのタイトルをログに表示 function updatesample(){ // googleカレンダーの取得 const Calendar = CalendarApp.getDefaultCalendar() // 今日のイベントをすべて取得 const events = Calendar.getEventsForDay(new Date()) // 今日のイベントのループ events.forEach(function(event, i , array){ console.log(event.getId()) //イベントID console.log( event.getTitle()) }) }
イベントIDを指定すれば、
イベントの変更や削除ができるので
event.setTitle("タイトルを変更しました") event.setDescription("変更後の詳細") event.deleteEvent()
カレンダー作成時にイベントIDを保持するようにします。
イベントIDの保持(スプレッドシートに書き出す)
既存のロジック内で、すでにイベントIDは取得しているので
そのイベントIDをスプレッドシート上に表示させます。
const EventIDCol = 11 //K列 //色の設定 if (contents[i][colorNum] != "") { let color = getcolornum(contents[i][colorNum]) // console.log(title) calevent.setColor(color) } //ここから追加 //イベントIDをK列に追加する console.log(calevent.getId()) sheet.getRange(topRow + i, EventIDCol).setValue(calevent.getId()) //ここまで追加 //予定が作成されたら「済」にする sheet.getRange(topRow + i, statusCellCol).setValue("済")
後は、このIDに対して更新すればOKです。
続きの動画はこちら
イベントIDに対するイベントの削除
/**
* Googleカレンダーからイベントを削除する
* 先頭カラムが空白の行のイベントを削除する
*/
function DeletEvent() {
// 読み取り範囲(表の始まり行と終わり列)
const topRow = 2
const lastCol = 11
const statusCellCol = 1
const EventIDCol = 11 //K列
// 予定の一覧バッファ内の列(0始まり)
const statusNum = 0
const startdayNum = 1
const startNum = 2
const enddayNum = 3
const endNum = 4
const titleNum = 5
const locationNum = 6
const descriptionNum = 7
const colorNum = 8 //色の列
const calnameNum = 9 //カレンダー名の列
const eventNum = 10 //イベントID
// シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
//カレンダーの設定
let Calendar = CalendarApp.getDefaultCalendar()
// 予定の最終行を取得
let lastRow = sheet.getLastRow()
//予定の一覧をバッファに取得
const contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues()
//順に予定を作成
for (let i = 0; i <= lastRow - topRow; i++) {
//「済」の場合は無視する
if (contents[i][statusNum] === "済") {
continue
}
let title = contents[i][titleNum]
let CalendarName = contents[i][calnameNum] //設定するカレンダー名
let eventID = contents[i][eventNum]
console.log(eventID)
try {
let event
//カレンダーの切り替え
if (CalendarName !== "") {
let calendars = CalendarApp.getCalendarsByName(CalendarName);
for (let i in calendars) {
Calendar = calendars[i]
console.log(calendars[i].getName())
}
}
//保持していたイベントIDからイベントを削除する
let delevent = Calendar.getEventById(eventID)
//イベントの削除
delevent.deleteEvent()
// エラーの場合ログ出力する
} catch (e) {
Logger.log(e)
}
}
// 完了通知
// Browser.msgBox("予定を追加しました。")
}
※本ロジックでは、カレンダーを切り替えて削除は行なえません。
カレンダーの変更
一旦削除して追加します。
//イベントの更新 function UpdateEvent() { DeletEvent() //イベントの削除 CreateSchedule4() //イベントの追加 }
以上です。
最後までご覧頂きありがとうございます。
【GAS】スプレッドシートからGoogleカレンダーに色付きで登録する方法
スプレッドシートからGoogleカレンダーに予定を追加する際に色を設定することができます。