【GAS】スプレッドシートにまとめたスケジュールを一気にGoogleカレンダーに変換する

スプレッドシートに書いた年間の日程をカレンダーに出力したい!

はじめに

学校現場でも、エクセルに予定をまとめて他の先生に共有している人も多いのでは無いでしょうか?

私が聞くところによると、表にまとめたものを手書きで書き写しているのだとか…

今回はそういった手間を省くためにツールを作りました。ぜひご利用ください!!!

準備

今回は次の準備をしてください。

  • 使うブラウザはGoogle Chrome
  • Google アカウントを作成
  • ネットサーフィンができるPC

スプレッドシートのダウンロード

今回、私が作成したプログラムが入っているスプレッドシートをダウンロードしていただきます!!

ボタンをクリックすると、『コピーを作成』という項目があると思いますので、そちらをクリックしてください!!

カレンダー登録シートの使い方

先ほどダウンロードしたスプレッドシートの使い方を紹介します。

年の設定

 

シートの『A1』セルにカレンダーの年を入力します。
入力は『半角』で入力してください。

スケジュールの設定

 

件名』と『開始時間』、『終了時間』があると思いますので、次の例のように入力してみてください!!

ポイントは『開始時間』と『終了時間』は半角で入力して、『時間』と『分』の間には半角コロン『:』を使ってください!

カレンダーへの出力

 

シートの『B1』にある『出力』ボタンを押すことで、このシートに書いたスケジュールをGoogleカレンダーに登録することが可能です。

このボタンを初めて押す場合は次のように承認を求められるため、『続行』ボタンを押してください。

ここから、GASを使用するための認証設定を行いますので、各項目の設定の仕方はこちらの記事をご覧ください!

【GAS】『このアプリはGoogleで確認されていません』と表示される場合の対処法

GASを実行しようとしてこんな画面が表示されたことありませんか? 今回はこの対処法についてお伝えしたいと思います。 Googleアカウントでの認証 Googleアカウントを用いた認証を行う際にアカウントの選択を行います。 […]

カレンダーの確認

再度出力ボタンを押して、次のような表示がされるまで待機します。

 

こちらの画面が表示されたら『OK』ボタンを押して、Googleカレンダーの確認に進みましょう!

 

先ほど作成した『テスト』という件名の予定が自動で出力されています!!

今回作成したスプレッドシートは、月毎の登録をさせていますので、各月ごとに日程を作ってから、『出力』ボタンを押してください.

お疲れ様でした!

今回は、スプレッドシートからGoogleカレンダーへの登録を簡単に行うツールを紹介しました。

学校現場でも日程が『紙』であったり『手書き』で渡される場合が多いそうですね。

今回をきっかけにGAS(Google Apps Script)を勉強していただけたらと思います。

今後もこのような情報を発信していきますので、ぜひお気に入り登録お願いします!!!

※プログラムにミスなどがあれば、コメントや問い合わせなどで教えていただけたらと思います。

おまけ

今回作成したスクリプトのコードを載せますので、勉強される方は参考にしていただければと思います!!

また、コードの質問などがあれば、なんでもお問い合わせください!!


function Convert2Calender() {
  // 現在開いているシートを取得する
  const ActiveSheet = SpreadsheetApp.getActiveSheet();
  // 現在開いているシートの月を取得する
  const ActiveMonth = ActiveSheet.getName().replace("月","");
  // 現在開いているシートのデータを二次元配列で取得する
  let SheetData = ActiveSheet.getDataRange().getValues();
  // 年度(1行A列のデータ)を取得する
  let TargetYear = SheetData[0][0];
  // デフォルトのカレンダーを取得する
  let Calendar = CalendarApp.getDefaultCalendar();
  // カレンダーのタイムゾーンの設定
  Calendar.setTimeZone("Asia/Tokyo");
  // 日程情報を検索していく処理
  for(let i = 1 ; i < SheetData.length ; i++){
    for(let j = 2 ; j < SheetData[i].length ; j+=3){
      if(SheetData[i][j] != ""){
        // 予定があった場合に、開始時間を参照して予定を作成する
        Calendar.createEvent(SheetData[i][j],
                              new Date(TargetYear+"/"+ActiveMonth+"/"+SheetData[i][0]+" "+SheetData[i][j+1]),
                              new Date(TargetYear+"/"+ActiveMonth+"/"+SheetData[i][0]+" "+SheetData[i][j+2]));
      }
    }
  }
  // 処理完了表示
  Browser.msgBox("日程をカレンダーに出力しました。");
}