Google Apps Scriptで指定した期間の営業日を出す(平日・土・日・祝日をそれぞれ分ける)
をHTML ServiceでWebアプリにするコードの例です
実行手順
- 以下のコードgsとindex.htmlを保存する
- Webアプリとして公開する(HTMLでページを作る)
- startとendの日付を入力する
- 「計算する」ボタンをクリックする
- ミリ秒から祝日の数までの計算結果が表示されます
Webアプリで計算する例(画像)
コード.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile("index");
}
function get_days_gs(start, end) {
var start_date = new Date(start);
var end_date = new Date(end);
var miliseconds = end_date - start_date;
var seconds = miliseconds / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var weeks = Math.floor(days / 7);
var rest_days = (days % 7);
var days_obj = get_each_days(start_date, days);
var result = [days_obj, miliseconds, seconds, minutes, hours, days]
return result;
}
function get_each_days(start_date, diff) {
var obj = {}
var sundays = obj["sundays"] = [];
var saturdays = obj["saturdays"] = [];
var public_holidays = obj["public_holidays"] = [];
var weekdays = obj["weekdays"] = [];
for (var i = 0; i < diff; i++) {
var year_now = start_date.getFullYear();
var month_now = start_date.getMonth();
var date_now = start_date.getDate();
var new_date = new Date(year_now, month_now, date_now + i);
var day = new_date.getDay();
var date = Utilities.formatDate(new_date, 'Asia/Tokyo', 'yyyy/MM/dd');
if (day == 0) {
sundays.push(date);
} else if (day == 6) {
saturdays.push(date);
} else if (public_holidays_obj[date]) {
public_holidays.push(date);
} else {
weekdays.push(date);
}
}
return obj;
}
var public_holidays_obj = {
"2017/01/01": "元日",
"2017/01/02": "元日 振替休日",
"2017/01/09": "成人の日",
"2017/02/11": "建国記念の日",
"2017/03/20": "春分の日",
"2017/04/29": "昭和の日",
"2017/05/03": "憲法記念日",
"2017/05/04": "みどりの日",
"2017/05/05": "こどもの日",
"2017/07/17": "海の日",
"2017/08/11": "山の日",
"2017/09/18": "敬老の日",
"2017/09/23": "秋分の日",
"2017/10/09": "体育の日",
"2017/11/03": "文化の日",
"2017/11/23": "勤労感謝の日",
"2017/12/23": "天皇誕生日",
"2018/01/01": "元日",
"2018/01/08": "成人の日",
"2018/02/11": "建国記念の日",
"2018/02/12": "建国記念の日 振替休日",
"2018/03/21": "春分の日",
"2018/04/29": "昭和の日",
"2018/04/30": "昭和の日 振替休日",
"2018/05/03": "憲法記念日",
"2018/05/04": "みどりの日",
"2018/05/05": "こどもの日",
"2018/07/16": "海の日",
"2018/08/11": "山の日",
"2018/09/17": "敬老の日",
"2018/09/23": "秋分の日",
"2018/09/24": "秋分の日 振替休日",
"2018/10/08": "体育の日",
"2018/11/03": "文化の日",
"2018/11/23": "勤労感謝の日",
"2018/12/23": "天皇誕生日",
"2018/12/24": "天皇誕生日 振替休日"
}
|
index.html
<!DOCTYPE html>
<html>
<body>
start:<input type="date" id="start"> end:
<input type="date" id="end">
<button id="bt">計算する</button><br>
<input type="text" id="miliseconds">ミリ秒<br>
<input type="text" id="seconds">秒<br>
<input type="text" id="minutes">分<br>
<input type="text" id="hours">時間<br>
<input type="text" id="days">日<br>
<input type="text" id="weekdays">営業日<textarea id="weekdays_date"></textarea><br>
<input type="text" id="saturdays">土曜日の数<textarea id="saturdays_date"></textarea><br>
<input type="text" id="sundays">日曜日の数<textarea id="sundays_date"></textarea><br>
<input type="text" id="public_holidays">祝日の数<textarea id="public_holidays_date"></textarea><br>
<script>
var start = document.getElementById("start");
var end = document.getElementById("end");
var bt = document.getElementById("bt");
var miliseconds = document.getElementById("miliseconds");
var seconds = document.getElementById("seconds");
var minutes = document.getElementById("minutes");
var hours = document.getElementById("hours");
var days = document.getElementById("days");
var weekdays = document.getElementById("weekdays");
var saturdays = document.getElementById("saturdays");
var sundays = document.getElementById("sundays");
var public_holidays = document.getElementById("public_holidays");
var weekdays_date = document.getElementById("weekdays_date");
var saturdays_date = document.getElementById("saturdays_date");
var sundays_date = document.getElementById("sundays_date");
var public_holidays_date = document.getElementById("public_holidays_date");
bt.onclick = bt_clicked;
function bt_clicked() {
var start_value = start.value;
var end_value = end.value;
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.get_days_gs(start_value, end_value);
}
function onSuccess(result) {
var days_obj = result[0];
weekdays.value = days_obj["weekdays"].length;
sundays.value = days_obj["sundays"].length;
saturdays.value = days_obj["saturdays"].length;
public_holidays.value = days_obj["public_holidays"].length;
weekdays_date.value = days_obj["weekdays"];
sundays_date.value = days_obj["sundays"];
saturdays_date.value = days_obj["saturdays"];
public_holidays_date.value = days_obj["public_holidays"];
miliseconds.value = result[1];
seconds.value = result[2];
minutes.value = result[3];
hours.value = result[4];
days.value = result[5];
}
function onFailure(e) {
alert([e.message, e.stack]);
}
</script>
</body>
</html>
|
