JavaScript
gas
spreadsheet

GoogleAppScriptでSpreadSheet操作、メール送信、定期実行を簡単実装

GoogleSpreadSheetにプログラミングに関わる用語で知らなかったものをメモしているのですが、その中からランダムに1日1回自分のメールに送信して覚えられるようにしたかったのでGASを使って仕組みを作りました。

結論

めちゃ簡単だった。

コード

メソッドの抽出をした方がいいですが調査しながら一旦動作出来るところまで実装したので、リファクタリングはしてません。

function fetchTechnicalTermAndSendToMe() {
  //現在のspreadsheetの取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  //現在のsheetの取得
  var sheet = spreadsheet.getActiveSheet();

  //データが存在する一番下の行番号
  var lastRow = sheet.getLastRow();

  //データが存在する一番右のカラム番号(A,B,C...が1,2,3...に置き換えられて数値が入ります)
  var lastColumn = sheet.getLastColumn();

  //読み取る最初のセルの行番号
  var startRow = 4;

 //読み取る最初のセルのカラム番号
  var startColumn = 3;

  //読み取るセルの範囲を指定
  var range = sheet.getRange(startRow,startColumn,lastRow - (startRow - 1),lastColumn);

  //指定した範囲内の値を配列で取得
  var values = range.getValues();

  //ランダムに1行を抽出
  var randomValue = values[Math.floor(Math.random() * values.length)]

  //メール文作成
  if(randomValue.length === 0){
    var err = "空行です";
    Logger.log(err);
    exit;
  }
  var term = "用語:" + randomValue[0];
  var description = "説明:" + randomValue[1];

  //メール送信
  MailApp.sendEmail({
     to: "your-mail@example.com",
     subject: "今日の用語",
     htmlBody: term + "<br>" + description,
   });
}

リファレンスと以下の記事を参考にしました。
リファレンス(SpreadSheet)
リファレンス(MailService)
【Google Apps Script入門】セルの取得・変更をする
※メール関連ではMailServiceGmailServiceがあるのですが、メール送信だけならMailServiceで十分です。

定期実行する

定期実行はスクリプトではなく、GASアプリの機能で実現します。
以下の記事をそのまま実施すればOKです。

(参考)Google Apps Scriptを使って定期実行するcronを作る

GASはやりたいなーと思いつつも、やる理由がなく手をつけてなかったのですが、今回やってみて手軽さ半端なかったので、他にも色々やってみたいと思いました。

以上。