見出し画像

Google HomeからClassroomに音声入力で連絡事項を書き込む

Googleホームから音声入力で、Googleクラスルームにクラスへの連絡事項が書込めたらいいなと思い、GASを使って作ってみました。GoogleHomeまたはGoogle Nestは設定済として話を進めていきます。まずはどんなシステムかいうと、下記の動画の通り

まずはIFTTT(イフト)のアカウントを作成する

IFTTTとは、異なるソーシャルメディアやプラットフォームを連携させるWebサービスです。下記URLからIFTTTのアカウントを作成します

Get startedをクリックする

ここではGoogleアカウントでIFTTTを設定したいと思います

Continue with Googleをクリック

アカウントが作成できたら下記をクリック
https://ifttt.com/explore

Applets(アプレット)を作成する

Createをクリック

addをクリック

検索にGoogleを入力して、Google Assistantをクリック

Google Assistantをクリック
Say a phrase with a test ingredientをクリック
$の前後に半角スペースを忘れない
日本語を選択して
Create triggerをクリックする
addをクリック
Google Sheetsをクリック
Add row to spreadsheetをクリック
Create actionをクリック
Continuueをクリック
アプリのタイトルを入力してFinishをクリック

GoogleHomeに話しかけてみよう

以上で設定は終了です。さっそくGoogleHomeに
 OK Google
 クラスに「こんにちは」を書き込んで

と話しかけてみましょう

GoogleドライブからスプレッドシートGoogle Assistant Commandsを開く

GoogleドライブからGoogle Assistant Commandsを検索して開きましょう。開いたスプレッドシートのシート1に日付と「こんにちは」が記入されていると思います。

スプレッドシートにGASを設定する

まず最初にスプレッドシートGoogle Assistant Commandsにシート2を追加します。

次にメニューの拡張機能からApps Scriptをクリックします

Apps Script名を連絡事項にし、下記のスクリプトをApps Scriptに貼り付けます

名前を「連絡事項」にするとよい
function onOpen() {
  SpreadsheetApp
    .getActiveSpreadsheet()
    .addMenu('音声書き込み', [
      {name: 'クラス一覧取得', functionName: 'classroomdata'},
      {name: '書き込む', functionName: 'createAnnouncements'},
    ]);
}
function classroomdata(){
  var now = new Date();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sht = ss.getSheetByName("シート2");
  var response = Classroom.Courses.list({});
  var courses = response.courses;
  var course = "";
  for (i = 0; i < courses.length; i++) {
    course = courses[i];
    sht.getRange(i + 1, 1).setValue(course.name);
    sht.getRange(i + 1, 2).setValue(course.id);
  }
}
function createAnnouncements(){
  var now = new Date();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sht = ss.getSheetByName("シート2");
  var sht1 = ss.getSheetByName("シート1");
  var lastRow1 = sht1.getLastRow();
  var value =  sht1.getRange(lastRow1, 2).getValue()
  var response = Classroom.Courses.list({});
  var courses = response.courses;
  var course = "";
  for (i = 0; i < courses.length; i++) {
    course = courses[i];
    if(sht.getRange(i + 1, 3).getValue() == 1){
      var data = {  
        "courseId" : course.id,
        "text": value,
        "assigneeMode": "ALL_STUDENTS",
        "state": "PUBLISHED"
      }
      Classroom.Courses.Announcements.create(data, course.id);
    }
  }
}

コピーしたものを貼り付けたら保存をクリックします

保存のアイコンをクリック

Classroom APIのサービスを追加する

サービスの+をクリック
Google Classroom APIを選択し、追加をクリック

スプレッドシートに作成したクラスルーム一覧を表示する

スプレッドシートに戻り、シートを再読み込みし、メニューの音声書込みから[クラス一覧取得]をクリックする。

スクリプトの実行許可をする

続行をクリック
アカウントをクリック
詳細をクリック
安全でないページに移動をクリック
許可をクリック
もう一度「クラス一覧取得」をクリック

クラス一覧が取得できるので、クラスルームに書き込みたいC列のセルに半角で1を入力する

C列に1を入力

トリガーをの設定

トリガーをクリック
トリガーを追加をクリック
実行する関数をcreateAnnouncement
イベントの種類を変更時にして
保存をクリック

以上でGoogleホームをスプレッドシートを通してクラスルームと連携することが出来ました!

Googleホームに話しかけて、クラスルームに書込んでみよう

 OK Google
 クラスに「明日から中間テストです」を書き込んで

と話しかけてみましょう。クラスルームに投稿されたと思います。
詳細動画も作りました。下記のYouTUbeをご覧ください。


この記事が気に入ったらサポートをしてみませんか?