見出し画像

#04 スプレッドシートの内容をカレンダーに書き出す

管理系ではなく、普段使いの GAS にもチャレンジしてみようと考えて、「工業教育に関する情報を発信│工業教育.net」の Tatsuya さんが公開されていた「スプレッドシート+GAS」を自分なりにカスタマイズしてみた。
※変更して、このように公開することは Tatsuya さんにも確認してあります。

変更した点は、

  1. スプレッドシート内の GAS を実行しようとしたときに、どの Google アカウントで実行されているのかわかり難い、という意見があったのでシート「カレンダー情報」で確認できるようにした。

  2. デフォルトのカレンダーに書き出すと共有し辛いので、処理対象となるカレンダーを登録されているカレンダーから選択できるようにした。
    ※ただし、現時点では同名のカレンダーが存在していた場合には、API で検索された先頭のカレンダーが対象となる。

  3. イベントを入力するシートを単一にして、シートの左上で「年」「月」を指定するようにした。万年カレンダーのように自動的に曜日や日数が変化するようにしたが、休日についてはシートの右側(列 AB)に登録する必要あり。

  4. 「開始時間」と「終了時間」の両方が登録されていれば、時間指定のイベントとして作成する。どちらか一方でも指定されていなければ、終日イベントとして作成する。

  5. 「開始時間」と「終了時間」の一方しか入力されていない場合には、イベントのタイトルに(~hh:mm)や(hh:mm~)と付加する。

  6. 実行時に確認画面を追加した。

  7. ページ上部に「クリア」ボタンを追加した。

  8. その他、軽微な変更。

と、2. ~ 4. の変更が大きいような感じです。

もとになっているプログラムについては、以下の記事で説明していますので、こちらも参考にしてください。

このスプレッドシートの使い方として、登録したイベントの内容を残しておくと考えられなかったので、単一のシートにまとめて、万年カレンダー化しました。 ※同一イベントの二重登録などをチェックしていないので、このままの状態で次年度まで残すことはないと考えたため。

使い方

プログラム中で参照しなければならない都合上、シート「カレンダー情報」についてはシート名を変更するとまずいのですが、イベント情報を入力するシートは「コピーを作成」「名前を変更」しても構いません。

シート「カレンダー情報」
  • 「登録カレンダー 取得」ボタンを押すと、このスクリプトを実行している Google アカウントに登録されているカレンダーが一覧表示されます。

  • ID や名称だけでなく、API で取得できるカレンダーの情報も表示してありますが、ID と名称以外はあまり有用ではないかもしれません。

  • このシートで取得したカレンダーの情報を、このスプレッドシートの目的であるイベントを登録するカレンダーの選択に使います。

シート「イベント出力(月毎)」
  • A1 と B1 のセルで、イベントを登録する「年」「月」を指定すると、カレンダーが自動的に更新されます。

  • F:H セルでドロップダウン形式で、イベント情報を出力するカレンダーを選択できます。

  • B 列以降にイベント情報を入力します。「件名」がイベントのタイトルとなります。「開始時間」と「終了時間」が入力されていれば、イベントに反映されますが、両方が入力されていなければ終日イベントとして作成されます。

  • 「出力」ボタンを押すと、カレンダーにイベントが出力されます。

利用してみたい方は、以下の URL からスプレッドシートをコピーして、お使いください。

https://docs.google.com/spreadsheets/d/1tUT3b5tUdOXrSFKBNaZieDKsC6MWqe1w0juip5zs96o/copy

  • リンク先のデータについて、設定してある休日のデータを 2022 ~ 2023年版に更新しました。 ※2023/01/12 更新

はじめて実行するときには、API を利用した GAS のスクリプトを実行するために、実行するためのアカウントやどこまでの情報にアクセスするかの確認が求められます。
この辺りの操作は、別の記事にまとめてあるので「#01 GAS のスクリプトを実行するときに...|ともかつのノート|note」をご覧ください。

作成したスクリプト

実際に作成した GAS のスクリプトは以下の通りです。スクリプト前半の82行目までは、カレンダー情報を取得するなどのために新規で作成した部分です。83行目以降の Convert2Calender 関数は、Tatsuya さんが作成されたものを改変したもので、大半は体裁を変更したぐらいで、大きな流れはあまり変わっていません。

また、このスクリプトやスプレッドシートの万年カレンダー化を実現するにあたって、「GIGAch」で公開されていた同様の「スプレッドシート+GAS」を参考にさせていただきました。

こういったものって、要望を実現できるスクリプトが作成できる『技術力』も大切なんだろうけど、「こんなことができれば便利になる」ということに気付ける『発想力』がもっと大切だと思います。

最後に

最後に、お決まりのフレーズを書いておきます。

  • 一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。

  • スプレッドシートへの書き出しを行っていますが、上記で説明している以外の場所への書き出しや収集などは行っていません。

  • 特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。

この「スプレッドシート+GAS」が役に立てば、幸いです。


この記事が気に入ったらサポートをしてみませんか?