LoginSignup
9
9

More than 3 years have passed since last update.

LinebotとGASとアニメで1日100フレーズの英文を3ヶ月復習してみた

Last updated at Posted at 2019-05-06

はじめに

この記事では、「英語を勉強している」という大義によって、他にやるべきことがあるにも関わらず、アニメや映画を見ることを正当化し、一見意識高そうに堕落する方法を紹介しています

やりたいこと

「ねえ、確率の計算って知ってる?」
Screen Shot 2019-05-06 at 0.08.33.png
「かずまが3回連続で勝つとかすごく無茶振りなんですけどー笑」
Screen Shot 2019-05-06 at 0.09.21.png
「スゥー。俺、じゃんけんで負けたことねえから」
Screen Shot 2019-05-06 at 0.09.52.png
みたいな英語のフレーズをスラスラと言えるようになりたい

出典:KONOSUBA -God's blessing on this wonderful world! 2 Episode 7 – An Invitation for This Knucklehead!

※違法サイトは使っておりません。英語ネイティブ向けの有料ストリーミングサービスからの引用です

作ったもの

スプレッドシートに入れた英文を15分ごとにLINEに通知してくれるlinebot

英語を見て、対応する日本語を忘れてしまっていた場合、リンクをクリックする
Screen Shot 2019-05-06 at 1.56.37.png

該当行にジャンプするので、対応する日本語を復習する
Screen Shot 2019-05-05 at 23.37.22 copy.png

15分ごとに通知するようにすれば1日100フレーズ復習できます
これで3ヶ月で最低限冗談言い合いながら会話できるようになりました

夜寝てる間には通知が30ほどたまるので、朝にまとめて復習します
寝る前と寝起きすぐの復習は記憶の定着率がいいそうです。

linebot(Line Messaging API)の登録

Line Developersから登録できます
登録方法は富士通さんの解説がわかりやすかったのでご参考ください
記事の頃から見た目が少し変わってますがわかる範囲だと思います

botのchannel accsess tokenと自分のuser idの取得、botへの友達登録まで済ませてください

Screen Shot 2019-05-06 at 1.12.51.png
Screen Shot 2019-05-06 at 1.15.02.png
Screen Shot 2019-05-06 at 1.14.13.png
Screen Shot 2019-05-06 at 0.48.37.png

スプレッドシート作成

なんでもいいので名前をつけて新規作成しましょう。作れたら1行目はスクショのようにします。

Screen Shot 2019-05-05 at 23.50.59.png

A列は復習したい外国語、B列は対応する日本語、C列は通知がどこまでされたかを表す数字です。
C列は最初は1と記入しておいてください。1つ通知が送られると数字が1ずつ加算されます

タイにいたためタイ語も入ってることご容赦ください。本来はタイ語が話せないという死活問題を解決することに始まり、英語に派生しました。ちなみに、タイ語は会話ができればよかったので発音記号とひらがなで覚えてました

gasの記述

こちらの方のスクリプトを参考にさせていただきました
コメントなど大変わかりやすかったため一部そのままのところもあります。ありがとうございます

Google Spread Sheetは1シートに対して1つのスクリプトを紐づけることができます
海外にかぶれてブラウザが英語設定なのもご容赦ください。

Screen Shot 2019-05-06 at 0.36.04.png

開けたらJavascriptを記述していきましょう
Screen Shot 2019-05-06 at 0.46.32.png

画像を参考にbotのchannel access tokenとuser id、スプレッドシートのリンクの3つを自分のものに変えてお使いください
z,y,zの羅列の部分です

https://script.google.com/hogefuga
/**
 * @OnlyCurrentDoc
 */

// LINE Developersに書いてあるChannel Access Token
var access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// 自分のユーザーIDを指定します。LINE Developersの「Your user ID」の部分です
var to = "yyyyyyyyyyyyyyyyyyyyyyyyy";

function text_message(text){
  return {
    "type": "text",
    "text": text
  }
}

function choose_in_order(arrayData,isChange){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var arrayIndex = sheet.getRange(1,3,1,1).getValue();
  var index = arrayIndex+1;
  if(isChange == true){
    if(index < sheet.getLastRow()){
      sheet.getRange(1,3,1,1).setValue(arrayIndex+1);
    }else{
      sheet.getRange(1,3,1,1).setValue(1);
    }
  }
  return index+':'+arrayData[arrayIndex-1][0];
}

function getEngs() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange(2,1,sheet.getLastRow()-1);
  var values = range.getValues();
  return values;
}

function getJaps() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange(2,2,sheet.getLastRow()-1);
  var values = range.getValues();
  return values;
}

function messagePush(){
//これは皆同じなので、修正する必要ありません。
  var url = "https://api.line.me/v2/bot/message/multicast";
  var headers = {
    "Content-Type" : "application/json; charset=UTF-8",
    'Authorization': 'Bearer ' + access_token,
  };

  var eng = choose_in_order(getEngs(),true);
/* 日本語も添えて送りたければこちらコメントアウト外してください
  var jap = choose_in_order(getJaps(),true); */

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var arrayIndex = sheet.getRange(1,3,1,1).getValue();

  var postData = {
    "to" : [to],
    "messages" : [
     text_message(eng+'\n'+'https://docs.google.com/spreadsheets/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/edit#gid=0&range=A'+arrayIndex)
// スプレッドシートではurlにrangeというクエリをつけることで指定したセルに飛ぶことができます
    ]
  };


/* 日本語も添えて送りたければこちらコメントアウト外して代わりにお使いください
  var postData = {
    "to" : [to],
    "messages" : [
      text_message(eng+'\n'+jap+'\n'+'https://docs.google.com/spreadsheets/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/edit#gid=0&range=A'+arrayIndex)
    ]
  }; */

  var options = {
    "method" : "post",
    "headers" : headers,
    "payload" : JSON.stringify(postData)
  };

  return UrlFetchApp.fetch(url, options);
}

再掲
Screen Shot 2019-05-06 at 1.15.02.png
Screen Shot 2019-05-06 at 1.14.13.png

15分おきに通知(メッセージ送信)の設定

最後に、あるタイミングでスクリプトを走らせるバッチの設定です

Screen Shot 2019-05-06 at 1.05.28.png
Screen Shot 2019-05-06 at 1.05.49.png

同じように設定してください
15分おきだと多いと感じる方はここで変更することができます
Screen Shot 2019-05-06 at 1.04.30.png

編集リクエスト、解説して欲しいところなどのコメントお待ちしております

参考

事前準備 LINE Messaging APIアクセストークンの取得 | 富士通

GASとLINE Messaging APIでpushメッセージのLINEbotを作る! | Qiita

KONOSUBA -God's blessing on this wonderful world! 2 Episode 7 – An Invitation for This Knucklehead! | Crunchyroll

9
9
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9