入門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);
}
};
};
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);
}
};
};
プログラミング興味はないけどスケジュール管理気をつけたいって人はここまででも結構。
仕組みまで気になるよ!って人はこちらから
Author And Source
この問題について(入門GoogleAppsScript 就活のスケジュールを漏れなくカレンダーに反映させたい(前半)), 我々は、より多くの情報をここで見つけました https://qiita.com/hinoBoku/items/3bf26871633dd8f463ef著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .