2022年2月11日金曜日

Google Spreadsheetで更新された値が閾値超えたらメール通知するGoogle Apps Scriptの設定

Raspberry Piに繋げたセンサーのデータはGoogle Spreadsheetに保存できたので、

【 Raspberry Piで取得したセンサー情報をGoogleスプレッドシートに保存する(Python) 】

今度はデータがCO2の値が更新された際に閾値を超えていたら自分にメール通知するように設定した


CO2の値を見て一応換気の目安にでもなればいいなと思うが、恐らく寒くて換気はしない気もする



 まずは該当のspreadsheetを開いて、【拡張機能】>【Apps Script】を開く




以下の内容でスクリプトを作成

function getLastRowValue() {

  //アクティブなシートを取得
  var sheet = SpreadsheetApp.getActiveSheet();
  //空白で無い最終行の行番号を取得してlastRowに代入
  var lastRow = sheet.getLastRow();
  //最終行の行番号(lastRow)列番号5.0(E列)に入力された値をvalueに代入
  var value = sheet.getRange(lastRow5.0).getValue();

  /*valueが1500を超えていればメール送信
  MailApp.sendEmail(<送信先メールアドレス),<件名>,<本文>);
  送信元は自身のgmail*/
  if (value > 1500){
    MailApp.sendEmail("<送信先メールアドレス>""CO2濃度通知","閾値オーバー、換気しましょう");
  }
}


この内容で保存して、画面左の時計マークの【トリガー】を開いてScriptの実行条件を以下の内容で設定する

【実行する関数】 上で作成した関数

【実行するデプロイ】Head

【イベントのソース】スプレッドシートから

【イベントの種類】変更時

【エラー通知】毎日通知を受け取る


これでRaspberry Piから入力された値からCO2の部分だけを見て処理してくれるようになった


テスト時はsheet.getRange()の値で行番号はlastRowを見ればいいので問題なかったが、列番号はE列だから5でいいかと思っていたが、整数だとエラーとなったので5.0とした

アルファベット1桁MS Excelもそうだが、A~ZまでではなくAAなど2桁以上になるからそのためだろうか

細かく調べていないのでその辺りの仕様はまだ理解できていない



if文の内容をもう少し細かくすれば乾燥だったり、夏場の熱中症対策などに役立てることもできそうだ