0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-02

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

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

####予定が多すぎて手帳に予定が入り切らない
・面談場所、時間、持ち物が書ききれない
・もういいから後で書こうって永遠に書かれない

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

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

#今回の成果物のイメージ

####1.記入用のスプレッドシート
sss.jpg
ダウンロードはこちらから
※表示されたスプレッドシートを必ずコピーして使ってください

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

GAS(Google Apps Script)とは

gas.jpg
・基本的には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);
    }
  };
};

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?