スポンサーリンク

Google App Script(GAS)で祝日を設定する方法です。

まずは以下のような予定表を作ります。

予定表の作り方

「1日」

「W3」の年、「Y3」の月を参照し、date関数で日付データを作成します。今回のサンプルでは「令和」としているので年の部分は2018を足します。日付の部分は最初は1日になるので1を固定で設定します。

=date(2018+$W$3, $Y$3, 1)

また、年と月が未設定だった場合は予期しない日付となるため、if関数で年と月のどちらかが空の場合は日付を表示しないようにします。

=if(or($W$3="",$Y$3=""),"",date(2018+$W$3,$Y$3,1))

「2日」以降

A5(前日)の日付に1日を足すだけです。

=A5+1

ただし月により日数が異なるため、if関数を使用して月の部分が翌月になっていたら表示しないようにします。

=if(month(A5+1)=$Y$3,A5+1,"")

さらにA5(前日)が空だった場合も想定をし、if関数を使用して空の場合は表示しないようにします。

=if(A5="","",if(month(A5+1)=$Y$3,A5+1,""))

オートフィルで、35行目までドラッグします。

曜日

曜日を表示する場合は、text関数を使用します。

=text(A5, "ddd")

参照をしている日付データが空になりエラーとなる場合があるので、iferror関数を使用して表示しないようにします。

=iferror(text(A5,"ddd"),"")

2日以降と同様、オートフィルで35行目までドラッグします。

予定表へ祝日を設定するスクリプト

コード

/**
 * メニューの作成
 */
function onOpen() {
  // UIのインスタンス
  var ui = SpreadsheetApp.getUi();

  // メニューの作成
  ui.createMenu('カレンダー')
    // アイテムを追加
    .addItem('祝日設定', 'setHoliday')
    .addToUi();
}

/**
 * 休日情報の設定
 */
function setHoliday() {
  // アクティブなスプレッドシート 
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // アクティブなシート
  const sheet = spreadsheet.getActiveSheet();

  // 休日を取得するためのID
  const id = 'ja.japanese#holiday@group.v.calendar.google.com';

  // 休日の情報
  const cal = CalendarApp.getCalendarById(id);

  // 1日が設定される行番号
  const rno = 5;

  for (var i = 0; i < 31; i++) {
    // 日付の取得
    var date = sheet.getRange(i + rno, 1).getValue();

    // 日付が未設定の場合は処理修了
    if (date == '') break;

    // 予定の取得
    var schedule = sheet.getRange(i + rno, 4).getValue();

    // 予定が設定されている場合
    if (schedule != '') {
      // 予定を空にする
      sheet.getRange(i + rno, 4).setValue('');
      // 文字の色を黒にする
      sheet.getRange(i + rno, 1, 1, 4).setFontColor("black");
    }
    
    // 休日情報の取得
    var holidays = cal.getEventsForDay(date);
    var holiday = holidays.length == 1 ? holidays[0].getTitle() : '';
    Logger.log(Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd') + ':' + holiday);

    // 休日情報がある場合
    if (holiday != '') {
      // 休日情報を予定に設定
      sheet.getRange(i + rno, 4).setValue(holiday);
      // 祝日なので文字を赤にする
      sheet.getRange(i + rno, 1, 1, 4).setFontColor("red");
    }
  }
}

実行

メニューへ追加されている「カレンダー」-「祝日設定」をクリックすると、予定へ祝日名が設定され赤字になります。

スポンサーリンク
おすすめの記事