入門GoogleAppsScript 就活のスケジュールを漏れなくカレンダーに反映させたい(前半)


就活あるある言いたい

大学生にとって突然現れる大きな壁。そうスケジュール管理。
今まさに就活生の支援をしていることも有るのですが、肌感1割程度の方がスケジュールミスで選考棒に振るんですよね…。

新しく手帳買いがち

・形から!と意気込んでいい手帳買う
・でもあんまり活用できない
・メモ帳でよかったのでは…?とあとから気がつく

予定が多すぎて手帳に予定が入り切らない

・面談場所、時間、持ち物が書ききれない
・もういいから後で書こうって永遠に書かれない

面接場所間違えがち

・あるあるってほどじゃないけどあるある
・説明会や一次選考は本社だったりそうじゃなかったり
・最悪のケース、場所間違えて第一志望の企業の選考に遅れることも…
つまり就活ってスケジュール管理が命綱だけどめちゃくちゃめんどくさいんですよね。

そこで今回は絶対にスケジュール管理をミスらない最強のスケジューラーをGoogleAppScriptを使って実装していこうと思います。

今回の成果物のイメージ

1.記入用のスプレッドシート


ダウンロードはこちらから
※表示されたスプレッドシートを必ずコピーして使ってください

2.表示されるカレンダーの画面


・スプレッドシートに記載されたものが自動的に反映されるようになっています
・選考前の予定が記載され、選考結果待ち、終了状況のものはカレンダーへの反映がされないようになっています

GAS(Google Apps Script)とは


・基本的にはJavaScriptに則ってコードを書き進めていくことが可能
・Googleの各種アプリと連携ができ、いろんなライフハックが可能に
・慣れれば営業職や文系を言い訳することなく使える
・(フロントエンドだけの)HP制作など、プログラミング?を学ぶくらいならGASがオススメ

完成物

ss2cal.js
function ss2cal() {

  const calendar = CalendarApp.getDefaultCalendar();
  const spreadSheetId = ''
  const spreadSheet = SpreadsheetApp.openById(spreadSheetId);
  const sheet = spreadSheet.getSheetByName('Master');
  const lastRow = sheet.getLastRow();

  //---ここまででカレンダーとスプレッドシートの定義は完了---
  //---以下では重複を防ぐために既にタイトルに【就活】と記載のあるイベントを削除する
  const today = new Date();
  const schedules = calendar.getEvents(today, new Date(today.getFullYear(), today.getMonth(), today.getDate() + 90));

  for (var i = 0; i < schedules.length; i++) {
    const eventName = schedules[i].getTitle();
    if (eventName.indexOf("【就活】") != -1) {
      schedules[i].deleteEvent();
      //---indexOf()文字列の検索が可能。今回はタイトルに【就活】と付くものを探して自動で削除している
    };
  };

  for (var i = 2; i <= lastRow; i++) {
    const status = sheet.getRange(i, 1).getValue();
    const title = '【就活】' + sheet.getRange(i, 2).getValue() + sheet.getRange(i, 3).getValue();
    const time = new Date(sheet.getRange(i, 5).getValue());
    const delta = new Date(sheet.getRange(i, 6).getValue());
    const startTime = new Date(sheet.getRange(i, 4).getValue())
    startTime.setHours(time.getHours())
    startTime.setMinutes(time.getMinutes())
    const endTime = new Date(startTime)
    endTime.setHours(endTime.getHours() + delta.getHours());
    endTime.setMinutes(endTime.getMinutes() + delta.getMinutes());
    const option = {
      location: sheet.getRange(i, 7).getValue()
    };

    if (status == "選考前") {
      calendar.createEvent(title, startTime, endTime, option);
    }
  };
};

プログラミング興味はないけどスケジュール管理気をつけたいって人はここまででも結構。
仕組みまで気になるよ!って人はこちらから