市販のカレンダーは、なんだか事務的。”家に飾れる”シンプルなカレンダーが欲しい!
10月を過ぎると、書店・文具店などでは翌年のカレンダーを見かけるようになります。いろんなタイプのカレンダーを見るのはとても楽しいのですが、我が家で使うとなると…
家庭で使うには、あまりに事務的・実用向き感が否めないのです😥
- もう少しシンプルな見た目のもの
- 落ち着いたデザインのもの(家に飾っても収まりがいいもの)
- 手頃な値段のカレンダー
がほしいなぁ・・・。
そんな中、Googleスプレッドシートのテンプレート集のことを思い出しました。こんな感じ
Googleスプレッドシート公式テンプレート「テンプレート ギャラリー」
・・・なのですがGoogleスプレッドシートのカレンダーテンプレートって、リリース時期がまったくわからないんですよね…困った😨
というわけで
Googleスプレッドシートのカレンダーテンプレートをもとに、カレンダーを作ってみました!(年間カレンダー・月間カレンダーどちらもありますよ😉)
このような見た目になります(以下の画像はサンプルです)



さらにこのカレンダー、ずっと使えたらとても便利だな!と思って(Googleのリリース待ちしてられない😅)
年度を変更すれば自動でカレンダーが更新される、万年カレンダーにしてみました!
良かったら、使ってみてくださいね。
※1 祝日表示をするためには、Google Apps Scriptでの設定が必要です。(簡単にできます) ※2 祝日設定をしなくても、祝日表示なしのカレンダーとして使えます 。
2021-09-30 追記:
- 2022年度の祝日に対応しました
- デザインを少し、見やすくしました
- ダウンロードしてすぐに印刷できる、PDFバージョンのカレンダーを作りました😀 以下のページから、ダウンロードできます
目次
この万年カレンダーを使ってできること
この OhYeah to こ サイトからコピーした Googleスプレッドシート製カレンダー に西暦を入力すると、
- その年の年間カレンダーと月間カレンダーが表示されます
Google Apps Script で設定を追加※3すれば、
- 祝日表示も含めたカレンダーが印刷できます※4。
ご自宅のプリンターなどで印刷してお使いください。 (A4サイズでの印刷を基本に、作っています)
※3 当年・翌年のみ表示可。 ※4 年間カレンダーでの祝日表示は、できません。(月間カレンダーのみ対応)
関連ページ
家族の予定を書き込みたい方は、こちら のカレンダーもありますよ😉

全体の流れ
- スプレッドシートの準備
- OhYeah to こ サイトから、ファイルをコピー(実物はこちらから)
- (祝日表示させたい方のみ:祝日設定のファイルを作成・実行)
- 西暦を入力
- データを確認したら、印刷
必要なもの
- パソコン
- ファイルのコピーや、祝日・印刷の設定に使います
- Googleアカウント
- スプレッドシートを利用する際などに、必要です
- プリンター・印刷用紙
- スプレッドシートで作ったカレンダーを、印刷します
使うアプリやソフト
- Googleスプレッドシート
- Google社製の表計算ソフトです
- Microsoft Excelとほぼ、変わりありません
- Google社製の表計算ソフトです
- Google Apps Script
- 祝日のデータを取得するために必要です
- 基本、コピペで大丈夫です
- 祝日のデータを取得するために必要です
Google Apps Script について

公式サイトの説明は以下、
Google Apps Script は JavaScript ベースのスクリプト言語で、ドキュメント、スプレッドシート、スライド、フォームなどの G Suite サービスをカスタマイズ、拡張できます。インストール作業は不要です。ブラウザ内で動作するコードエディタが用意されており、スクリプトは Google のサーバーで実行されます。
ということで、
- JavaScriptという簡単なプログラミング言語と、かなり似ています
- Webブラウザ上で動くので、パソコンさえあれば特別に何かを用意する必要はありません
- Googleが提供しているものなので、Googleドキュメントやスプレッドシート、Gmailなどと連携して、便利に使うこともできます
Google Apps Script、少しでも使えると(読むことができると)とっても便利です。 大人のプログラミングの学習の導入としても、良いんじゃないかな?と思ってますので、この機会にぜひ使ってみてはいかがでしょうか?
注意事項とお願い
私なりに頑張ってこのカレンダーを作成しましたが、Googleの仕様変更等、最新の更新にもれなく対応していくのは難しいです😥
印刷・ご利用になる前に
- カレンダーの曜日や祝日は正しいか?
など、あらかじめのご確認をお願いいたします🙇
また、万年カレンダースプレッドシートをコピーする際、「閲覧権限のみ」で、「アクセス権をお渡しすることはできません」。
コピー方法などの解説は以下にありますので、よろしくお願いいたします🙇
参考サイト
以下のサイトを参考に作成しました。
- google spread sheetに自動更新される日本の祝日シートを作る
- Google Apps Scriptで現在日時の取得
- 【超便利】スプレッドシートで別シートから参照したり集計したりする方法まとめ
- Google 公式スプレッドシートサイト(右上のテンプレートギャラリーより、2020年カレンダー)
以下のサイトで、いつも勉強させてもらっています!
いつも隣にitのお仕事 ↑↑このサイトの運営者さんが書かれたこちらの本↓↓も、かなりおすすめです。
作成手順

これからは、
- Googleスプレッドシート → スプレッドシート
- Googleカレンダー → カレンダー
- Google Apps Script → GAS
のように表記します。
カレンダースプレッドシートのコピー
ここで行ってもらうのは、スプレッドシートのダウンロードではなく「ファイルのコピー」です。ご注意下さい🙇💦
スプレッドシートの準備
カレンダーの西暦を設定して、印刷するためのスプレッドシートを準備します。
スプレッドシートのコピーを作成
まずは以下の「OhYeah 万年カレンダー」ファイルを開いて「コピーを作成」してください。 (Googleアカウントにログインしていない方は先に、ログインしておきましょう。画面右上にログインボタンがあります。)
年間カレンダーは、どちらのカレンダーにも入っています😉
![]() |
![]() |

注意とお願い
ご利用の皆様には「閲覧権限のみ」で、「アクセス権をお渡しすることはできません」ので必ず以下の方法にて、ご利用をお願いいたします🙇
- このスプレッドシートを利用する場合は必ず「コピーを作成」して、ご自身のGoogleドライブ内にコピーファイルを作成してください
- シートの関数をさわってしまうと、動作がおかしくなってしまいます。お取り扱いにご注意願います🙇
シートを開いて「ダウンロード」を選んでも、以降から使うスプレッドシートを使うことができません。
万年カレンダー スプレッドシートファイルの中身
スプレッドシートファイルの中には、以下のようなシートが含まれています。
- OhYeah 万年カレンダー
- 年間カレンダー
- 祝日一覧
- 1月〜12月の月間カレンダー
「祝日一覧」シートを更新して祝日表示をしたい場合、スプレッドシートとGASの紐付け+設定が必要です。 GASファイルは、上記のコピーに 含まれません。(後ほど新規作成します)
祝日一覧の説明
祝日一覧シートは、GASを使ってGoogleの祝日カレンダーから必要な情報を取り出し、表示するためのデータ専用シートになります。

スプレッドシートの設定
特別な設定がなくても西暦を入力するだけでカレンダーが表示されます。
西暦の変更
スプレッドシート → 年間カレンダーシートの右下にある西暦(AA1 に当たる箇所)を選択して、西暦を入力(半角数字で入力)します。

年間カレンダーが表示され、月間カレンダーの方にもデータが反映されますので、確認してください。
祝日設定の必要がない人は、これで終了です。 印刷方法はこちらから
以下、祝日設定の方法です。
祝日の設定
Google Apps Script ファイルの作成
万年カレンダーがコピーできたら
- 「拡張機能」→「Apps Script」から、Google Apps Scriptファイルを作成します

1. ファイルを開いたら「無題のプロジェクト」→ファイル名を変更。ここでは「**年間カレンダー祝日取得**」とします

「コード.gs」の中身を作成
まずは以下をコピペしてください。
コード.gs
function holiday_main() {
// 今年の1/1から
const startDate = new Date();
startDate.setMonth(0, 1);
startDate.setHours(0, 0, 0, 0);
// 来年の12/31まで
const endDate = new Date();
endDate.setFullYear(endDate.getFullYear() + 1, 11, 31);
endDate.setHours(0, 0, 0, 0);
const sheet = getholidaysheet();
const holidays = getHoliday(startDate, endDate);
const lastRow = sheet.getLastRow();
const startRow = 1;
sheet.clearContents();//スプレッドシートのデータを更新
sheet.getRange(startRow, 1, holidays.length, holidays[0].length).setValues(holidays);
}
/**
* SHEET_URLで指定したドキュメント内のSHEET_NAMEのシートを取得する
* SHEET_NAMEのシートが存在しない時は、シートを作成する
*/
function getholidaysheet(){
const SHEET_URL = "https://docs.google.com/spreadsheets/d/**************/edit#gid=********";
const SHEET_NAME = "祝日一覧";
const ss = SpreadsheetApp.openByUrl(SHEET_URL);
const sheet = ss.getSheetByName(SHEET_NAME);
if(sheet == null) {
sheet = ss.insertSheet(SHEET_NAME);
}
return sheet;
}
/**
* startDate〜endDateまでの祝日をgoogleカレンダーの「日本の祝日」から取得
* [日付,祝日名]の多次元配列にした上で返す
*/
function getHoliday(startDate, endDate) {
const cal = CalendarApp.getCalendarById("ja.japanese#holiday@group.v.calendar.google.com");
const holidays = cal.getEvents(startDate,endDate);
const values = [];
for(const day in holidays) {
values[day] = [holidays[day].getStartTime(), holidays[day].getTitle()];
}
return values;
}
コード.gsの説明と注意
- 祝日は、2年分のデータを取得しています。
- 年をまたぐ際に、必要になります。
- 以下の部分は、スプレッドシートのアドレスをそのままコピペして貼り付けしてください。
const SHEET_URL = https://docs.google.com/spreadsheets/d/********************/edit#gid=**********;
- 以下の部分 の「祝日一覧」のような箇所は、スプレッドシートのシート名をそのまま書くようにしてください。 (シート名をオリジナルに変更した場合は変更後の名前にするよう、注意してください。)
const SHEET_NAME = "祝日一覧";
動作するか?確認をします
GASファイルが完成したら、一度テストしてみましょう。
コード.gsのテスト
「関数(holiday_main)」を選択 → 右方向の黒い三角ボタンを押します。

成功していれば、スプレッドシートの「祝日一覧」に祝日が出ているはずです。

GAS実行の設定
毎度GASファイルを開くのは大変なので、時間が来たら自動で関数が実行できるように、設定をします。
トリガーで実行させる
- 「トリガーマーク(時計マーク)」→ 右下の「トリガーを追加」をクリック


- データ取得のトリガーを追加
- 実行する関数 → holiday_main
- 実行するデプロイを選択 → Head(変更なし)
- イベントのソースを選択 → 時間主導型
- 時間ベースのトリガータイプを選択 → 月ベースのタイマー
- 日を選択 → 20日(この辺はお好みで)
- 時刻を選択 → 午前0時~1時(ここもお好みで)
- エラー通知設定 → 毎日通知を受け取る(変更なし)
のようにして、保存。

これで月1回、20日の午前0時〜1時に自分のカレンダーデータを取る設定ができました。
手動で実行するために
念の為に、手動でも簡単にデータを取得できるようにしておきます。
コピーしたスプレッドシートの右側に
- 「祝日一覧」シートを選択 → 黄色の「Get Holiday !」ボタン

がありますか?
スプレッドシートのボタンがない場合
- 「挿入」→「図形描画」→「図形」で、好きなボタンの形を作成


– 「テキストボックス」→ ボタンの中に表示するテキストを入力する(ここではGet Holiday !)→「保存して終了」(右上にある緑ボタン)→ スプレッドシートの右側に置いておく

実行ボタンの設定
設置した(されていた)ボタンを右クリックすると、ボタン右上に3点マークが出てきます。
- 3点マークを 左クリック → スクリプトを割り当て


**holiday_main** と入力して、割り当てます。
割り当てが完了したら、この吹き出しボタンのクリックでも、データ取得できます。(先ほど、ファイルで実行ボタンを押したのと同じことができます。便利😉)
スプレッドシート「祝日一覧」の設定は、ここまでです。
印刷について

印刷は、スプレッドシートの印刷ボタンから行いましょう。 印刷したいシートを選んでから、ボタンを押します。

印刷設定
お持ちのプリンターや、印刷したい紙のサイズに合わせて設定を変更してください。
私の設定は(月間カレンダーの場合)、
- A4サイズ
- ページの向き → 横向き
- スケール → 高さに合わせる
- 余白 → カスタム数値
- 上:1.5cm
- 下:2.0cm
- 左・右:0.6cm
- 印刷形式 → 配置
- 水平:左
- 垂直:上
としています。(右側にメモとして手書きできるよう、余白を持たせました)
あとはお好みでどうぞ😊
「次へ」ボタンで、次へ

- ページ → すべて
- カラー → カラー
- 詳細設定 → 用紙サイズ → A4サイズ
印刷が確認できたら、おしまいです。
プリンターについて
プリンターは、お手持ちのプリンターで大丈夫です👍 もしも買い替えを考えているのであれば、ブラザープリンターをお勧めします🖨️
私も使っていますが、
- 印刷がきれい
- サポートがしっかりしている
- 純正インクが(他に比べて)安め
- インク交換が簡単
です。
- 年賀状印刷で、写真やさんレベルのクオリティを求める方
- 家庭のプリンターで写真印刷をしたい方
には多少、物足りないかもしれませんが、
- 日常のプリントアウト(カレンダー印刷・Webページの印刷などデータの印刷など)
- インクジェット用紙でのプリント(年賀状をインクジェット紙で出す方など)
で事足りるのであれば、使い勝手が良いブラザープリンター、オススメです。
印刷用紙について
印刷用紙は、普通用紙ももちろんOKですが
どうせならこんな用紙はいかがでしょうか?
ベースの色(用紙の色)を変えるだけで、いつもと違った味のカレンダーを作ることができます。また、月間カレンダーとして使うなら、ある程度の厚みがあるほうが使いやすいですよ。

まとめ
このページでは、GoogleスプレッドシートやGASを使って、万年カレンダーを作成してみました。
祝日表示設定の部分は多少、ややこしく感じるかもしれませんが、その他はほぼ、ファイルのコピーだけで表示できたのではないかな?と思います。
自分好みに色を変更したり・文字サイズを変えたり、カスタマイズして使ってみてください。
表示がおかしくなった場合
万が一、表示がおかしくなった場合は、再度ファイルのコピーをしてください。(そのほうがたぶん、早いです。)
あとは、GASファイルの設定も忘れずに・・・
それでは!