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

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

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

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

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

前回

Googleスプレッドシートからカレンダー名を指定してGoogleカレンダーに登録する
  • スプレッドシートからGoogleカレンダーにカレンダー名を指定してカレンダーに登録する事ができます。
  • しかもGASの知識は不要で思考停止で動画のとおりにやるだけで実現できます。
  • 今回は、とっても価値の高い方法をお伝えします。


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

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

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

    動画はこちら

    【GAS】Googleカレンダー スプレッドシートから指定したカレンダーを変更する方法1

    イベントの取得

    イベント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カレンダー関連

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