メールを活用する例文暗記スプレッドシート



 言語:Google Apps Script
 機能:登録しておいた例文の中から、いくつかランダムに選んでメールで送る
 入力:スプレッドシートに記入した例文(原文、ふりがな、訳文)
 出力:出題範囲からランダムに選んだ例文をメールで送る
 実行画面: 


説明:
例文暗記は外国語学習についてまわります。この作業をなるべく普段の生活に溶け込ませることができればより成果が上がりそうです。
このスクリプトはスプレッドシートに書き込んでおいた例文の中で、出題対象としておいたものの中からランダムに指定数個選び、メールで指定アドレスに送る、というものです。
利用方法は、まず上図のように記入された「Sentences」シートと、「Setting」シートを持つスプレッドシートを用意します。
「Setting」シートには、B1セルにメール送信時の件名、B2セルに出題例文数、B3セルに送信先メールアドレスを記入しておきます。
そして以下のスクリプトを仕込んで、トリガーとして「時間主導型・日タイマー・(希望時間)」を設定しておけば、毎日その時間に、指定数個の例文をメールで送ってよこす、というわけです。
なお、「Sentences」シートにおいて、A列は例文の分類用で、スクリプトは利用していません。B列は原文で必須、C列はふりがなで省略可です。
D列は訳文で必須、E列は出題対象にするかどうかの情報で、ここに何か記入されていると出題対象と解釈します。
記入する文字は何でもかまいません。




function remindSentence() {
  var setting = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Setting");
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sentences");
  var lastRow = sheet.getLastRow();
  var subject = setting.getRange(1,2).getValue();
  var qNum = setting.getRange(2,2).getValue();
  var recipient = setting.getRange(3,2).getValue();

  if(qNum>0){
    var tmpList = [];
    for(var i=2; i<=lastRow; i++){
      if( sheet.getRange(i,5).getValue()!=""){
        tmpList.push(i);
      }
    }
    var sList = [];
    for(var i =0; i < qNum; i++){
      var rem  = tmpList.length;
      if(rem!=0){
        var r = Math.floor(Math.random() * rem);
        sList.push(tmpList[r]);
        tmpList.splice(r,1);
      }
    }
    tmpList=null;
    
    var genbun = [];
    var hurigana = [];
    var yakubun = [];
    
    for(var i=0; i < sList.length; i++){
      var wNum = sList[i];
      genbun.push(sheet.getRange(wNum,2).getValue());
      hurigana.push(sheet.getRange(wNum,3).getValue());
      yakubun.push(sheet.getRange(wNum,4).getValue());
    }
    
    var body = "";
    for(var i =0;i < sList.length;i++){
      body = body+(i+1)+". ";
      body = body+genbun[i];
      if(hurigana[i]!="")body = body+" ["+hurigana[i]+"]";
      body = body+"\n"
    }
    for(var i =0;i < 20;i++){
      body = body+"\n";
    }
    for(var i =0;i < sList.length;i++){
      body = body+(i+1)+". ";
      body = body+yakubun[i]+"\n";
    }
    GmailApp.sendEmail(recipient, subject , body);
  }
}