業務上で必要となったので、Googleスプレッドシートで日本の祝日情報を取得する方法をGoogle Apps Scriptで作ってみました。
スクリプトの内容
- メニューに「祝日情報取得」という名称のメニューボタンを追加し、祝日情報取得関数(getHolidayData)を実行できるようにする。
- 祝日情報取得関数(getHolidayData)が呼び出されると、内閣府が用意している祝日CSVを取得し、シートに書き込む。(URL: https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv)
スクリプト
function onOpen() {
// メニュー追加
SpreadsheetApp
.getActiveSpreadsheet()
.addMenu('祝日情報取得',[
{name: '情報取得', functionName: 'getHolidayData'}
]);
}
function getHolidayData() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('祝日一覧');
// 祝日一覧のシートのF3セルに内閣府祝日データCSVのURLを記載してあります。
var url = sheet.getRange('F3').getValue().toString();
var charset = 'Shift_JIS';
var response = UrlFetchApp.fetch(url);
var holidayCSV = response.getContentText(charset);
var ary = Utilities.parseCsv(holidayCSV);
sheet.getRange(1,1,ary.length,ary[0].length).setValues(ary);
}
-
※スクリプトを登録した際は、onOpen()を実行して、権限を許可しておいてください。
-
スクリプト参考記事
- CSVの読み込みは次の記事を参考にしました。
- メニュー追加機能は次の記事を参考にしました。
動作
- メニューにある「祝日情報取得」を実行します。(権限を求められたときは許可して、再度実行してください。)
- 実行すると、下の様にA:Bセルにデータが挿入されます。
ちなみに
他にも方法はあります。 Googleカレンダーの祝日カレンダーから取得する方法があります。
(多分正攻法はこっちな気がします…)