GoogleスプレッドシートをGAS(Google Apps Script)で拡張!カレンダー式血圧・検温表を自作する方法
数年前から毎朝・晩に血圧を計測し記録しているのですが、特にアプリを使うでもなく、Googleスプレッドシートを利用し、
縦に日付を1日から31日、横に朝晩の血圧、脈拍等を書き込む形式のファイルを作成していました。
毎年の暮にカレンダーをちまちまと作成していたのですがさすがに面倒くさくなってきたので、本職がプログラマということもあり、
スクリプトを使って作成する手法を確立しておこうということで頑張ってみましたので、作成方法を公開してみたいと思います。
まずは完成図から。
今回の場合は2025年版の血圧表なので、『2025年_血圧_体温』というタイトルとしています。
1月~12月までの各シートに縦方向に日付を入れ、それぞれ朝・晩の数値を記入していくというものです。
日付部分は
- 土曜は薄い青
- 日曜は薄い赤
- 祝日は薄い黄色
として分かりやすくしています。
もう手作業は卒業!Googleスプレッドシートで血圧・検温表をGAS(Google Apps Script)で簡単作成
ではここから作成方法です。
手順1.スプレッドシートの準備
1-1.スプレッドシートを作成
新規Googleスプレッドシートを開きます。
Google chromeからの場合は、右上のメニューから「スプレッドシート」を選択します。
任意の名前(2025年_血圧・検温情報)を付けます。
1-2.Apps Scriptを開く
メニューから「拡張機能」 > 「Apps Script」を選択。
1-3. スクリプトを記述
開いたスクリプト用のウィンドウに以下のコードをコピーして貼り付けます。
2025年のカレンダーを作成するので、year は 2025 とし、
また、必要に応じて祝日リストを更新してください(holidays
オブジェクト)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
function createCalendar() { const year = "2025"; const holidays = { "2025/01/01": "元旦", "2025/02/11": "建国記念の日", "2025/02/23": "天皇誕生日", "2025/03/20": "春分の日", "2025/04/29": "昭和の日", "2025/05/03": "憲法記念日", "2025/05/04": "みどりの日", "2025/05/05": "こどもの日", "2025/07/21": "海の日", "2025/08/11": "山の日", "2025/09/15": "敬老の日", "2025/09/23": "秋分の日", "2025/11/03": "文化の日", "2025/11/23": "勤労感謝の日" }; const ss = SpreadsheetApp.getActiveSpreadsheet(); // 1月~12月のシートを作成 for (let month = 1; month <= 12; month++) { const sheetName = `${month}月`; let sheet = ss.getSheetByName(sheetName); if (!sheet) { sheet = ss.insertSheet(sheetName); } else { sheet.clear(); // 既存の内容をクリア } // 表題を設定 const header = ["日付", "時刻", "血圧 (上)", "血圧 (下)", "脈拍", "体温"]; sheet.getRange(1, 1, 1, header.length).setValues([header]); // ヘッダーのスタイルを設定 sheet.getRange(1, 1, 1, header.length) .setFontWeight("bold") .setHorizontalAlignment("center") .setVerticalAlignment("middle"); // 列ごとの文字揃えを設定 sheet.getRange(2, 1, sheet.getMaxRows(), 1).setHorizontalAlignment("center"); // A列 sheet.getRange(2, 2, sheet.getMaxRows(), 1).setHorizontalAlignment("center"); // B列 sheet.getRange(2, 3, sheet.getMaxRows(), 4).setHorizontalAlignment("right"); // C~F列 // 日付を記入 const daysInMonth = new Date(year, month, 0).getDate(); for (let day = 1; day <= daysInMonth; day++) { const date = new Date(year, month - 1, day); const dayOfWeek = date.getDay(); // 0:日曜, 6:土曜 const dateString = Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy/MM/dd"); // 日付セルに値を設定 const row = day * 2; sheet.getRange(row, 1, 2, 1).merge(); sheet.getRange(row, 1).setValue(`${dateString}`) .setHorizontalAlignment("center") .setVerticalAlignment("middle"); // 縦位置中央に設定 // 日付の下に罫線を引く sheet.getRange(row + 1, 1, 1, 6).setBorder(true, null, true, null, null, null, "black", SpreadsheetApp.BorderStyle.SOLID); // A列に罫線を引く sheet.getRange(row, 1, 2, 1).setBorder(true, true, true, true, null, null, "black", SpreadsheetApp.BorderStyle.SOLID); // 背景色を設定 if (dayOfWeek === 0) { sheet.getRange(row, 1).setBackground("#F4CCCC"); // 日曜: 薄い赤 } else if (dayOfWeek === 6) { sheet.getRange(row, 1).setBackground("#CFE2F3"); // 土曜: 薄い青 } else if (holidays[dateString]) { sheet.getRange(row, 1).setBackground("#FFE599"); // 祝日: 薄い黄色 } else { sheet.getRange(row, 1).setBackground("#FFFFFF"); // 平日: 白 } // B列からF列の背景色を設定 sheet.getRange(row, 2, 1, 5).setBackground("#F3F3F3"); } // 列幅調整 sheet.setColumnWidth(1, 150); sheet.setColumnWidths(2, 5, 100); // B~F列を広げる sheet.setRowHeights(2, daysInMonth * 2, 20); } } |
4.スクリプトを保存
作成したスクリプトに「2025年血圧カレンダー作成」などの名前を付けて保存します。
保存したスクリプトを使いまわしできるのかと思っていましたが、私の見た限りでは、作成したスプレッドシートのみ使用できるといった感じでした。
そんなはずはないだろうという感じがするので、また調査してみたいと思います。
手順2. スクリプトの実行
「Apps Script」のエディタで上記スクリプトを保存後、メニューから「▶ 実行」ボタンをクリックして実行します。
初回実行時に認証を求められたら、指示に従って認証します。
スクリプトが実行されると、1月から12月までのシートが自動作成され、日付や色分けが完了します。
3.仕上げ
スプレッドシートのデザインやフォントを微調整することで、さらに見やすくできます。
この例だと1行目の表題を大きくしたり、背景色をつけたりすることで更にわかりやすくなるかと思います。
再度、完成したものを貼っつけます。
まとめ
以上で 2025 年版の血圧記録スプレッドシートが作成できました。
来年の年末は変数 year を 2026 に変更し、祝日設定を変更するだけであっという間にできる予定。
プログラムってスゴイね(笑)