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

【GAS】Googleカレンダーにリマインダー時間を指定して登録する(Gスプレッドシート)

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

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

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

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


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

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

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

前回の動画に対して質問をいただきました。

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

     

    動画はこちら

     

    シートはこちら

    *クリックすることでシートが開きます。(コピーしてお使いください)

    過去にリマインダーの設定する記事がありました^^

    【GAS】カレンダー登録時にリマインダー(通知)の時間を指定して登録する方法
  • GASでGoogleカレンダー登録時にリマインダーの時間を指定して登録することができます。
  • さらにリマインダーなしの指定やメールによるリマインダーの指定方法がわかります。
  •  

    リマインダーを23分前に設定
    function registcoltest() {
      // googleカレンダーの取得
      const calendar = CalendarApp.getDefaultCalendar()
    
    
      let event = calendar.createEvent(
        "テスト23分前",
        new Date('2025-9-1 10:00'),
        new Date('2025-9-1 11:00')
      )
      event.addPopupReminder(23)
    
    
    }

    スクリプト

    なのでこれを今回は、前回のスクリプトに入れ込みたいと思います。

    以下が、入れ込んだ結果です。

    // カレンダーにスケジュールを登録する(カレンダー名指定可能)
    function CreateScheduleremind() {
    
    
    
      // 読み取り範囲(表の始まり行と終わり列)
      const topRow = 2
      const lastCol = 10
      const statusCellCol = 1
    
    
    
      // 予定の一覧バッファ内の列(0始まり)
      const statusNum = 0
      const startdayNum = 1
      const startNum = 2
      const enddayNum = 3
      const endNum = 4
      const reminderNum = 5 //通知時間
      const titleNum = 6
      const locationNum = 7
      const descriptionNum = 8
      const calnameNum = 9    //カレンダー名の列
    
    
    
      // シートを取得
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
    
    
    
      // 予定の最終行を取得
      const lastRow = sheet.getLastRow()
    
    
    
      //予定の一覧をバッファに取得
      const contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues()
    
    
    
      // googleカレンダーの取得
      let Calendar = CalendarApp.getDefaultCalendar()
    
    
    
      // バッファの内容に従って予定を作成
      for (let i = 0; i <= lastRow - topRow; i++) {
    
    
    
        //「済」の場合は無視する
        if (contents[i][statusNum] === '済') {
          continue
        }
    
    
    
        // 値をセット 日時はフォーマットして保持
        let startday = contents[i][startdayNum]
        let startTime = contents[i][startNum]
        let endday = contents[i][enddayNum]
        let endTime = contents[i][endNum]
        let reminderTime = contents[i][reminderNum]
        let title = contents[i][titleNum]
        let calname = contents[i][calnameNum]    //設定するカレンダー名
    
    
    
        // 場所と詳細をセット
        let options = { location: contents[i][locationNum], description: contents[i][descriptionNum] }
    
    
    
        console.log(startday + " " + contents[i][titleNum])
    
    
    
        try {
          let calevent
    
    
    
          //カレンダーの設定
          if (calname === "") {
            calendar = CalendarApp.getDefaultCalendar()
          }
          else {
            let calendars = CalendarApp.getCalendarsByName(calname);
            for (let s in calendars) {
              Calendar = calendars[s]
              console.log("カレンダー指定 -> " + calendars[s].getName())
            }
          }
    
    
    
          // 終了日の有無をチェック
          if (endday === '') {
            endday = startday //終了日に開始日を入れておく
          }
    
    
    
          let startDate = new Date(startday)
          let endDate = new Date(endday)
    
    
    
          // 開始終了時刻が無ければ終日で設定
          if (startTime == '' || endTime == '') {
            endDate.setDate(endDate.getDate() + 1)    //★なぜか1日プラスする
            console.log("設定する終了日 -> " + endDate)
    
    
    
            //終日の予定を作成
            calevent = Calendar.createAllDayEvent(
              title,
              startDate,
              endDate,
              options
            )
    
    
    
            // 時間指定ありで予定を作成する
          } else {
            // 開始日時を設定する
            startDate.setHours(startTime.getHours())
            startDate.setMinutes(startTime.getMinutes())
    
    
    
            //終了日時を設定する
            endDate.setHours(endTime.getHours())
            endDate.setMinutes(endTime.getMinutes())
    
    
    
            // 日時付きの予定を作成する
            calevent = Calendar.createEvent(
              title,
              startDate,
              endDate,
              options
            )
    
    
            if (reminderTime != '') {  //通知時間が指定されていれば
              const reminderMinutes = parseInt(reminderTime);
              Logger.log(`reminderMinutes ${reminderMinutes}`);
              calevent.addPopupReminder(reminderMinutes);
            }
    
    
          }
    
    
    
          //予定が作成されたら「済」にする
          sheet.getRange(topRow + i, statusCellCol).setValue('済')
    
    
    
          // エラーの場合ログ出力する
        } catch (e) {
          Logger.log(e)
        }
      }
    
    
    
      // 完了通知
      // Browser.msgBox("予定を追加しました。")
    }
    
    

     

     

     

     

     

     

    ポイント

    リマインダーの追加は、作成したイベントに対し

      event.addPopupReminder(23)

    すればいいだけです。

    今回は、

    1. シートに通知時間(リマインダー)の列を追加
    2. 読み込み位置の追加 const reminderNum = 5 //通知時間
    3. 通知時間の読み込み  let reminderTime = contents[i][reminderNum]
    4. リマインダーの設定  calevent.addPopupReminder(reminderMinutes)

    を追加しました。

     

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

    つぎはこちら

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

     

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

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