GoogleAppsScript
ifttt
GoogleSpreadSheet
GoogleHome

Google Home(おっけーぐーぐる)で漢字テストをはじめよう

はじめに

2017年冬休み明けに漢字テストをするから、しっかり練習しといてねと、小学生のこどもに漢字の宿題がでました。
しかし、答えの書かれたプリントが配布されただけで、練習用のプリントはありませんでした。
問題だけ書いたプリントを自作すればよかったのですが、印刷の手間を考えると、面倒くさかったり、最終的にゴミになると思い、Google Homeで問題を読み上げることにしました。

前提

 Google Homeは自発的に発声することは標準ではできません。
 「Google Home しゃべらせる」等で検索して、設定しました。
 google-home-notifierをRaspberry Piにインストールし、firebaseの更新をトリガに
 発声させる仕組みにしています。

概要

kanji.png

「おっけーぐーぐる 漢字テスト」の呼びかけで、「IFTTT」を経由し、Google SpreadSheet内のスクリプトが起動します。
スクリプトで、漢字の問題が記載されたSpreadSheetを1セルずつ読み、出題するという流れです。

準備

以下のような感じで、問題用のSpreadSheetを用意します。
q002.png

詳細

IFTTT経由で、スクリプトを実行させます。
「漢字テスト開始ファイル」というファイルに行を追加することで、ファイル変更をトリガーに設定されたスクリプトを実行します。

ifttt002.png

スクリプトのトリガー設定
trigger002.png

以下のようなスクリプトを実行させます。

コード.gs
// 漢字テスト用のファイル
var spreadsheet = SpreadsheetApp.openById('1_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
var sheet = spreadsheet.getSheetByName('問題');

// 問題の記載された列
var questionColumn = 1;

function readTest() {
  // 読上げ開始位置
  var currentRow = 1;
  // 問題  
  var questionStr = "";


  // 問題の読上げ
  questionStr = sheet.getRange(currentRow,questionColumn).getValue();
  while ( questionStr != "") {
    Logger.log(questionStr);
    CommonScripts.sendGoogleHomeLiving(questionStr);

    // 問題を出したあとは30秒待機
    Utilities.sleep(30000);
    currentRow = currentRow + 1;
    questionStr = sheet.getRange(currentRow,questionColumn).getValue();
  }


}

Google Homeにしゃべらせるためのメソッドは外だしにしていて、以下のように実装しています。(Firebaseのレコード更新を検知してしゃべります)

CommonScripts.gs
function sendGoogleHomeLiving(message){
  var url = "https://hogehogehoge.firebaseio.com/test.json";
  var payload =
   {
     "message" : message
   };

   var options =
   {
     "method" : "PUT",
     "contentType": "application/json",
     "payload" : JSON.stringify(payload)
   };
  Logger.log(JSON.stringify(payload));
  UrlFetchApp.fetch(url, options);


  // 同じ命令を繰り返した時に発声しないので、DBの値をクリア  
  if( message != "" ) {
   sendGoogleHomeLiving(""); 
  }


}

まとめ

こいつのおかげか、漢字テストには合格したようでした。
子どもも、目新しいせいか、進んで「おっけーぐーぐる 漢字テスト」と言っては、
漢字の練習をしていました。

ただ、実装にあたりいくつか課題(気づき)もありました。
 ・Google Action Scriptの実行時間に制限(6分)があり、超えると途中で止まってしまう。
 →今回、漢字を書いている時間を考慮して、途中でsleepを入れています。そのことで、どうしても処理時間が長くなってしまいます。
https://developers.google.com/apps-script/guides/services/quotas

 ・「市場(いちば)」が問題なのですが、漢字で入力しておくと、Google Homeは「しじょう」と読みました。この辺りは、ひらがなで入力するなどの対策が必要でした。

Google Home、GoogleAppsScript楽しいです:grinning:
子どもの知育にもよいのでは!?と勝手に思ってます!