Google Apps Script を使って何分後の時間を取得する

↓こちらのスプレッドシートでは、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にアクセスして、その行を削除します。

関連記事