2つのGoogleカレンダーに追加・削除を行う

メンバーシップ

メンバーシップの一覧

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

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

前回

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


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

  • スプレッドシートから2つのカレンダーに予定を追加できます。
  • 追加した予定を削除することができます。

なので、サクッとマスターして

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

動画はこちら

【コピペでできる】Googleスプレッドシートから2つのカレンダーに予定を登録・削除する GAS

シートはこちら

*クリックすることでシートが開きます。

スクリプト

/**
 * Googleカレンダーに予定を追加・削除する
 */
function CreateSchedule() {


  const calname2 = "new カレンダー1"   //2個めのカレンダー


  //イベントIDを出力する列
  const EventIDCol1 = 8 //H列
  const EventIDCol2 = 9 //I列


  const C_END = "済"
  const C_DEL = "削除"


  // googleカレンダーの取得
  const Calendar1 = CalendarApp.getDefaultCalendar()


  calendars = CalendarApp.getCalendarsByName(calname2);
  for (let s in calendars) {
    Calendar2 = calendars[s]
    console.log("カレンダー指定2 -> " + calendars[s].getName())
  }


  // 読み取り範囲(表の始まり行と終わり列)
  const topRow = 2
  const lastCol = 9      //読み込む最終桁
  const statusCellCol = 1 //登録


  // 予定の一覧バッファ内の列(0始まり)
  const statusNum = 0
  const dayNum = 1
  const startNum = 2
  const endNum = 3
  const titleNum = 4
  const descriptionNum = 5
  const locationNum = 6
  const eventNum1 = 7   //イベントID
  const eventNum2 = 8   //イベントID


  // 現在のシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()


  // 予定の最終行を取得
  let lastRow = sheet.getLastRow()


  //予定の一覧をバッファに取得
  const contents = sheet.getRange(topRow, statusCellCol, sheet.getLastRow(), lastCol).getValues()



  //順に予定を作成
  for (let i = 0; i <= lastRow - topRow; i++) {
    //「済」の場合は無視する
    if (contents[i][statusNum] === C_END) {
      continue
    }


    try {
      //「削除」の場合は
      if (contents[i][statusNum] === C_DEL) {


        let eventID1 = contents[i][eventNum1]
        let eventID2 = contents[i][eventNum2]


        console.log(eventID1)
        console.log(eventID2)


        //保持していたイベントIDからイベントを削除する
        let delevent = Calendar1.getEventById(eventID1)


        //イベントの削除
        delevent.deleteEvent()


        //保持していたイベントIDからイベントを削除する
        delevent = Calendar2.getEventById(eventID2)


        //イベントの削除
        delevent.deleteEvent()


        console.log("削除しました")


      }
      else {    //通常の登録


        // 値をセット 日時はフォーマットして保持
        let day = contents[i][dayNum]
        let startTime = contents[i][startNum]
        let endTime = contents[i][endNum]
        let title = contents[i][titleNum]


        // 場所と詳細をセット
        let options = { location: contents[i][locationNum], description: contents[i][descriptionNum] }


        console.log(day + " " + contents[i][titleNum])


        let calevent  //イベントID


        // 予定日がなければスルーする
        if (day === '') {
          console.log(day)
          console.log("スルー")
          continue


        // 予定日があれば範囲で設定
        } else {
          // 開始日時を作成
          let startDate = new Date(day)
          startDate.setHours(startTime.getHours())
          startDate.setMinutes(startTime.getMinutes())


          // 終了日時を作成
          let endDate = new Date(day)
          endDate.setHours(endTime.getHours())
          endDate.setMinutes(endTime.getMinutes())


          // 予定を作成
          calevent = Calendar1.createEvent(
            title,
            startDate,
            endDate,
            options
          )


          //イベントIDを出力する
          console.log(calevent.getId())
          sheet.getRange(topRow + i, EventIDCol1).setValue(calevent.getId())


          // 予定を作成
          calevent = Calendar2.createEvent(
            title,
            startDate,
            endDate,
            options
          )
          //★イベントIDを出力する
          console.log(calevent.getId())
          sheet.getRange(topRow + i, EventIDCol2).setValue(calevent.getId())


        }
      }
      //済にする
      sheet.getRange(topRow + i, statusCellCol).setValue(C_END)


      // エラーの場合ログ出力する
    } catch (e) {
      Logger.log(e)
    }
  }
  // 完了通知
  // Browser.msgBox("予定を追加しました。")
}

 

ポイント

1つめのカレンダーは、デフォルトカレンダーにしています。

1つめのカレンダーも名前で指定したい場合は、以下のように変更します。

1).1個めのカレンダー名を追記する

2).デフォルトのカレンダーをコメントアウトする

3).Calendar1の取得を追加する

const calname1 = "テスト1" //1個めのカレンダー 1)

// googleカレンダーの取得  2)
// const Calendar1 = CalendarApp.getDefaultCalendar()
// Calendar1の取得 3)
calendars = CalendarApp.getCalendarsByName(calname1);
for (let s in calendars) {
Calendar1 = calendars[s]
console.log("カレンダー指定1 -> " + calendars[s].getName())
}

 

 

最後までご覧いただきありがとうございます。

つぎはこちら

メンバーシップの一覧

コメント

タイトルとURLをコピーしました