↓こちらのスプレッドシートでは、Google Apps Script を使います。
C列(何分後)とD列(項目名)に値が入ったら、A列に今の日時、B列にC分後の予定の日時が自動的に入るようにします。
var sheet = SpreadsheetApp.getActiveSheet();
function addDate() {
setNowDate(1, "yyyy/M/d H:m:s");
setInfoDate(2,"yyyy/M/d H:m:s");
}
function setNowDate(col, format) {
var lastrow = sheet.getLastRow();
if (sheet.getRange(lastrow, col).getValue() == "")
sheet.getRange(lastrow, col).setValue(formatDate(new Date(), format));
}
function formatDate(date, format) {
return Utilities.formatDate(date, 'Asia/Tokyo', format)
}
//---
function setInfoDate(col,format) {
var nowDate = new Date();
var lastrow = sheet.getLastRow();
var addMin = sheet.getRange(lastrow, 3).getValue();
var infoDate = new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate() ,nowDate.getHours(), nowDate.getMinutes()+addMin,nowDate.getSeconds());
if (sheet.getRange(lastrow, col).getValue() == "")
sheet.getRange(lastrow, col).setValue(formatDate(infoDate, format));
}
function checkInfoDate(){
var lastrow = sheet.getLastRow();
var nowDate = new Date();
if(lastrow == 1){ //データがなければ実行しない
return;
}
for (var i=2; i<=lastrow; i++) {
var infoDateTime = sheet.getRange(i, 2).getValue();
if(infoDateTime < nowDate){
var memo = sheet.getRange(i, 4).getValue();
sendHttpGet("お知らせします。" + memo + "の時間になりました。" + "繰り返します。" + memo + "の時間になりました。");
sheet.deleteRows(i, 1);
break;
}
}
}
function sendHttpGet(msg){
UrlFetchApp.fetch("http://【ngrok で作られたドメイン】/?msg=" + msg);
}
↓こちらのように1分単位で監視して、予定の日時が来たら特定のURLにアクセスして、その行を削除します。