GAS(Google Apps Script)で、Googleカレンダーより祝日を取得することができます。
そこで、前年、今年、来年の祝日を取得してスプレッドシートに出力をする方法です。
手順
- 祝日のリストを作りたいスプレッドシートを準備して、メニューの「拡張機能」→「Apps Script」をクリックします。
- Google Apps Scriptのエディタが開くので、プロジェクト名を設定し、次の章のソースコードを貼り付け保存します。
コード
/**
* 前年、今年、来年の祝日をGoogleカレンダーより取得してスプレッドシートに出力します。
*/
function getHolidayCalendar() {
// 現在日
let now = new Date();
// 年を取得
let year = now.getFullYear();
// 前年の1月1日を取得
let startDate = new Date(year - 1, 0, 1);
// 来年の12月31日を取得
let endDate = new Date(year + 1, 11, 31);
// カレンダー(祝日)を取得
let calendar = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
// イベントを取得
let event = calendar.getEvents(startDate, endDate);
// 祝日の日付とタイトルを詰める配列
let holidays = new Array();
// 見出しを配列に詰めておく
holidays.push(["日付", "祝日"]);
// イベントの件数処理を繰り返す
for(let i = 0 ; i < event.length ; i++ ){
// 祝日の日付
var holiday = Utilities.formatDate(event[i].getStartTime(), 'Asia/Tokyo', 'yyyy/M/d');
// タイトル(祝日名)
var title = event[i].getTitle();
// 祝日の日付とタイトルを詰める
holidays.push([holiday, title]);
}
// アクティブなスプレッドシートのシートを取得
let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 祝日の出力とレイアウト
let range = sheet.getRange(1, 1, holidays.length, 2);
range.clear();
range.setValues(holidays);
range.applyRowBanding(SpreadsheetApp.BandingTheme.ORANGE);
// 見出し部分のレイアウト
let headRange = sheet.getRange(1, 1, 1, 2);
headRange.setHorizontalAlignment("center");
headRange.setVerticalAlignment("middle");
headRange.setFontColor("#fff");
}
実行方法
初回実行時で「承認が必要です」とポップアップが表示された場合は、実行できるように承認を行なってください。承認方法は以前の投稿の「GASで初回実行時の承認・許可」をご覧ください。
実行結果の確認
実行をするとアクティブ(選択をしていた)なシートへ、実行をした時点の、前年・今年・来年の祝日が出力されます。
- レイアウトの変更などは使いやすいように自由に行なってください。
- あくまで無料のサンプルコードです。使用する場合はご自身の利用に合うかご確認の上使用をしてください。