サイトアイコン Googleスプレッドシート 完全攻略

【GAS】Googleカレンダーに登録した項目を変更する方法

スプレッドシートから予定を入力する方法「全体像」

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

スプレッドシートからGoogleカレンダーに予定を流し込む(インポート、連携する)方法
スプレッドシートに記載した予定をGoogleカレンダーに連動させることができます。 「GASって何?」状態であってもコピペで簡単にできます。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

なので、動画をご覧いただき

と答えてあげてください。

動画はこちら

イベントの取得

イベント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カレンダーに予定を追加する際に色を設定することができます。

スプレッドシートから予定を入力する方法「全体像」
Googleカレンダー関連

モバイルバージョンを終了