前提・実現したいこと
指定日が残り1日未満の時間になれば、"残り1日を切っています"と表示したい。
該当のソースコード
javascript
ソースコード
var gettitle=document.getElementsByClassName("fi-title");//タイトル設定のクラス取得
FiTitle = gettitle[0].innerHTML;//課題のタイトル取得
var getdate=document.getElementsByClassName("small-detail-info");//期限設定のクラス取得
var object=getdate[3].outerHTML;//提出期限設定のクラス取得
//開始日と終了日がそれぞれ二桁の時間だと仮定しそれぞれの文字列を取得する
//object1の中身の例:2018/10/05 13:00
//object2の中身の例:2018/10/10 23:30
var object1=object.substr(399,16);//開始日
var object2=object.substr(488,16);//終了日
var date_start=object1.indexOf('<');//(この文字(<)がなければ―1が返ってくる)
var date_end=object2.indexOf('</');
var date_end2=object2.indexOf('<');
var deadline=object.indexOf('style="display: block;"');//提出期限がすぎている場合はこの文字列がある。
var task=object.indexOf('data-end="null"');//レポートタスク以外の場合期限設定がnullになっている
var getdate_end;
var flag=0;
var getsubject=document.getElementsByClassName("course-name-text-header-mvc");//教科タイトル設定クラスの取得
var subject=getsubject[1].innerHTML;//教科タイトルの取得
var getdescription=document.getElementsByClassName("description-text");//説明設定クラスの取得
var description=getdescription[0].innerHTML //課題説明の取得
if(FiTitle && object && task !== -1){//タスクチェック(レポートタスクか)
alert("レポートタスクかお確かめください");
}else if(deadline !== -1){//期限チェック
alert("この課題は提出期間が終了しています");
}else if(date_start !== -1 && date_end !== -1){//開始日の時間と終了日の時間が一桁の場合、それぞれ一文字ずつ取得した文字がずれ、開始日の最後に < が終了日の最後に </ がつく
//2018/10/05 8:00< ← こうなる(開始日の日付は一例)
//018/10/10 8:00</ ← こうなる(終了日の日付は一例)
//提出期限を知らせるため開始日は入れず、終了日のみ取得する getdate_end=object.substr(487,4)+'-'+object.substr(492,2)+'-'+object.substr(495,2)+'T'+'0'+ object.substr(498,1)+':'+object.substr(500,2)+':00';//提出終了日取得および文字列の調整 flag++;
}else if(date_start == -1 && date_end2 !== -1){//終了日の時間が一桁の場合最後に < がつく
getdate_end=object.substr(488,4)+'-'+object.substr(493,2)+'-'+object.substr(496,2)+'T'+'0'+ object.substr(499,1)+':'+object.substr(501,2)+':00';//提出終了日取得および文字列の調整 flag++;
}else if(date_start !== -1 && date_end2 !== -1){//開始日の時間が一桁で終了日の時間が二桁の場合 最後に < がつく(両方)
getdate_end=object.substr(487,4)+'-'+object.substr(492,2)+'-'+object.substr(495,2)+'T'+ object.substr(498,2)+':'+object.substr(501,2)+':00';//提出終了日取得および文字列の調整 flag++;
}else{//開始日の時間が二桁で終了日の時間が二桁の場合
getdate_end=object.substr(488,4)+'-'+object.substr(493,2)+'-'+object.substr(496,2)+'T'+ object.substr(499,2)+':'+object.substr(502,2)+':00';//提出終了日取得および文字列の調整 flag++;
}
if(flag == 1){//開始日と終了日が取得できたときだけGooglecalendarのタブを開く
var url = (function(){
var getUTC = function(date_str){
var date = new Date(date_str);
return date.getUTCFullYear() +
zerofill(date.getUTCMonth()+1) +
zerofill(date.getUTCDate()) +
'T' +
zerofill(date.getUTCHours()) +
zerofill(date.getUTCMinutes()) +
zerofill(date.getUTCSeconds()) +
'Z';
};
var zerofill = function(num){
return ('0'+num).slice(-2);
}
return 'http://www.google.com/calendar/event?' +
'action=' + 'TEMPLATE' +
'&text=' + encodeURIComponent(FiTitle) +
'&details=' + encodeURIComponent(description) +
'&location='+ encodeURIComponent(subject) +
'&dates=' + getUTC(getdate_end) + '/' + getUTC(getdate_end) +
'&trp=' + 'false' +
'&sprop=' + encodeURIComponent('リンク設置元のURL') +
'&sprop=' + 'name:' + encodeURIComponent('リンク設置元のサービス名');
})();
window.open(url);
}
補足情報(FW/ツールのバージョンなど)
プログラミング初心者のため右も左もわからない状態です。