Googleカレンダーから今日の予定をGoogleスプレッドシートに取り込む

Googleカレンダー

Googleカレンダー関連

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

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

前回

【GAS】今日の予定を自動的にLINEに送信する方法(LINE アクセストークンの取得方法)
  • Googleカレンダーの今日の予定がLINEに送信されます。
  • Googleカレンダーを開かなくても良いので便利です。
  • 今回は、とっても価値の高い方法をお伝えします。


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

    • 今日の予定をスプレッドシートに取り込むことができます。
    • GASをスプレッドシートから実行する方法がわかります。

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

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

    今日の予定をスプレッドシートに取り込む

    動画はこちら

    コピペでできる Googleカレンダーからスプレッドシートに今日の予定を取り込む方法

    シートはこちら

    ※クリックするとシートが開きます。

    スクリプト

    /**
     * 今日の予定をスプレッドシートに取り込む
     * 
     */
    function CalendarToSpreadsheet() {
    
    
      const DSP_ROW = 1   //表示開始行
      const DSP_CLM = 1   //表示開始位置
      const SHEET_NAME = ""   //★特定のシートに出力する場合は、指定する
    
    
       let booklist = [["カレンダー名", "タイトル", "時間"]] //★ヘッダー
      //let booklist = []
    
    
      const calendars = CalendarApp.getAllCalendars()
      let text = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "\n"
    
    
      //カレンダー分のループ
      for (i in calendars) {
        let calendar = calendars[i]
        let events = calendar.getEventsForDay(new Date())
    
    
        //カレンダー名を取得する
        if (events.length > 0) {
          text = calendar.getName()
        }
    
    
        //カレンダーの内容を取得する
        for (j in events) {
          let book = []                           //一回の予定
          let event = events[j]
          book.push(text)
    
    
          //タイトル
          book.push( event.getTitle())
    
    
          //時間
          let start = toTime(event.getStartTime())  //開始時間
          let end = toTime(event.getEndTime())      //終了時間
          console.log(end)
    
    
          
          let booktime
          if (end == '00:00') {
            end = '24:00'
          }
          if (start == '00:00' & end == '24:00') {
            booktime = '終日'
          }
          else {
            booktime = start + ' - ' + end
          }
          book.push(booktime)
          booklist.push(book)                       //一回の予定を格納する
        }
    
    
      }
      console.log(booklist)
      console.log(booklist.length)
    
    
      if (booklist.length == 0) {
        Browser.msgBox("今日の予定", "今日の予定はありません", Browser.Buttons.OK)
      }
      else {
        let sh
        if (SHEET_NAME == "") {
          //シート名が指定されていない場合は、アクティブなシートに出力する
          sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
        }
        else {
          sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME)
        }
        sh.getRange(DSP_ROW, DSP_CLM, booklist.length, 3).setValues(booklist)
      }
    }
    
    
    
    
    //'HH:mm'に変換する
    function toTime(str) {
      return Utilities.formatDate(str, 'JST', 'HH:mm')
    }

     

    設定方法

    Step1.

    Googleカレンダーを取り込みたいシートを開きます。

    ①「拡張機能」ー「Apps Script」をクリックします。

     

    Step2.

    ①上記「スクリプト」の右上のアイコンをクリックします。
    ※スクリプトがクリップボードにコピーされます。

     

    Step3.

    ①スクリプトエディタの先頭にスクリプトを貼り付け(Ctrl+V)ます。
    ②「(プロジェクトを保存)」をクリックします。

     

    これで、準備完了です。

    試しに実行してみましょう。

    Step4.

    ①「▼」をクリックして「CalendarToSpreadsheet」を選択します。
    ②「実行」をクリックします。
    ③カレンダーに予定があるとログが表示されます。

     

    後は、ボタンに割り当てるかメニューから選択して実行します。

    割り当て方法はこちら↓

    【GAS】GAS(マクロ)を手軽にメニューやボタンから実行する方法(カスタムメニュー)
  • GAS(マクロ)をスプレッドシートのメニューから実行することができます。
  • GAS(マクロ)をボタンのクリックで実行することができます。
  •  

     

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

    つぎはこちら

    Googleカレンダーから明日の予定をスプレッドシートに取り込む
  • JavaScriptで明日を取得する方法がわかります。
  • 明日の予定をスプレッドシートに取り込むことができます。
  • Googleカレンダー関連

    コメント

    1. ひろたに より:

      いつも拝見させていただいており、非常に勉強となります。

      Googleカレンダーの予定を変更した際に、
      変更履歴をスプレッドシートとGMAILへ通知する方法があれば教えていただきたいです。

      仕事で複数のアカウントでカレンダーが変更された履歴をわかるようにしたく質問させていただきました。

      よろしくお願いいたします。

      • hiroshi より:

        コメントありがとうございます。
        ※G Suiteを用いた変更履歴に関しては使用していないので、わかりません。

        おそらくGoogleカレンダーの予定が変更されてもイベントが発生しないので、
        定期的にGoogleカレンダーを読み込み違いがあれば通知する形になると考えます。

        なので仕様的には以下のような感じになります。
        1.Googleカレンダーを読み込みスプレッドシートに書き出す
        2.一定時間ごとに1.を行い違いの有無をチェックする
        3.違いがあれば、違いを通知するために整形する。
        4.スプレッドシートGmailに3.を送る

        かなり雑なのでもう少し仕様を詰める必要があります。

    2. なかじま より:

      お世話になっております。

      拝見させていただき、参考にさせていただきました。

      当日の予定を抽出することができましたが、

      明日の予定を抽出する場合は上記記載されているスクリプトのどの部分を

      どう変更すれば明日の予定が抽出できますか?

      よろしくお願いします。

    3. おおば より:

      こんにちは。
      過去何度もこちらの紹介された内容を実践してコピペで使えるのもあり時短につながり大変助かっています。
      便利な内容で感謝、ありがとうございます!

      今回スプレッドシートとGカレンダーの連携できたらいいなと思い初めて着手しているのですが、スプシの日報へ、カレンダーに登録した内容を落とし込みたく
      上記の内容がかなり適していまして今回の記事においてお伺いしたいことあります。

      今回のは自分のカレンダー以外の情報も引き込むため
      1つのカレンダーIDだけに絞る場合はどうしたらよいでしょうか。
      よろしくお願いします。

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