Googleカレンダー翻訳通知アプリ 〜開発未経験者でも作れる〜

今回はGoogleカレンダーの内容をGoogle翻訳し、それを毎日LINEに通知するアプリの作り方を紹介します。
英語を勉強していた際に、身近なところから英語を身につけたいと思い、考えついたアイデアです。カレンダーであれば頻繁に使用すると思いますし、自分が頻繁に使用する言葉を英語で覚えるという意味で効果的だと思います。GoogleのサービスであるGoogle翻訳を使用するため、翻訳の精度は保証できかねますが、いちいち単語を調べたりすることがめんどくさいという方にはオススメです。

【こんな方にオススメ】
・英語を勉強しているが、単語を調べるのが面倒くさい方
・毎日の予定を英語で何というか知りたい方
・アプリを作ってみたいと考えている方
【アプリ作成に必要なもの】
・Googleのアカウント
・LINEのアカウント
【アプリ作成手順】
1. LINE Notifyにアクセスし、トークンを発行する
2. GoogleAppsScriptでプログラムを書く
3. プログラムを実行する

1. LINE Notifyにアクセスし、トークンを発行する

今回、GoogleのサービスをLINEと連携するのですが、その際にトークンと呼ばれるコードが必要となりますので、まずはそのコードを発行します。

(1)下記URLにアクセスし、ログインする。

(2)ページ右上のボタンをクリックし、「マイページ」ボタンをクリックする。

(3)「トークンを発行する」ボタンをクリックする。

(4)通知の受け取り先を指定する。
LINE Notifyから直接受け取る場合は、「1:1でLINE...」を選択して下さい。
グループ宛に通知してほしい場合は、通知先のグループを指定して下さい。
トークン名は通知が来た時に表示される名前です。必要であれば入力して下さい。

(5)発行されたトークンをコピーする。


2. GoogleAppsScriptでプログラムを書く

続いてGoogleAppsScriptを用いてプログラムを書いていきます。

(1)GoogleDriveからGoogle Apps Scriptファイルを開く。

「Google Apps Script」をクリックすると下記のような画面が開きます。

(2)コードを書く。
以下のコードをコピーしてテキスト画面に貼り付けて下さい。
その際に、上から2行目の「XXXXX」の箇所に発行したトークンを入力して下さい。
※今回はアプリ開発が目的であるため、コードの解説は行いません。
コードはこちら

// LINE Notifyでトークルームのトークンを取得して以下に設定★
var LINE_NOTIFY_TOKEN = "XXXXX";
var NOTIFY_API = "https://notify-api.line.me/api/notify";

function translateDiaryIntoEnglish() { // ---- (*1)
  // 今日の予定を取得 --- (*2)
  var today = new Date();
  var day = today.getDate();
  // javascriptで月を取得すると0-11月を取得するため +1が必要
  var month = today.getMonth() + 1;
  var year = today.getFullYear();
  var events = CalendarApp.getDefaultCalendar().getEventsForDay(today);
  var bodyItem = [ year + "." + month + "." + day + "-Diary-" + "\n"];
  for (var i = 0; i < events.length; i++) {
    var e = events[i];
    var d = e.getStartTime();
    var dstr = z2(d.getHours()) + ":" + z2(d.getMinutes());
    // タイトルを取得
    var title = LanguageApp.translate(e.getTitle(), "ja", "en");
    // 内容を取得
    var content;
    content = LanguageApp.translate(e.getDescription(), "ja", "en");
    bodyItem.push(dstr + "> " + title);
    bodyItem.push(content);
  }
  if (bodyItem.length == 0) {
    bodyItem.push("I hava no plan.");
  }
  // LINEに送信 --- (*3)
  _sendMessage(bodyItem.join("\n"));
}
function z2(n) {
  n = "00" + n;
  return n.substr(n.length - 2, 2);
}

// スタンプを送信する
function _sendMessage(msg) {
  // 認証情報のセット
  var headers = {
    "Authorization": "Bearer " + LINE_NOTIFY_TOKEN
  };
  // メッセージをセット
  var payload = {
    "message": msg
  };
  // 送信情報をまとめる
  var options = {
    'method' : 'post',
    'contentType' : 'application/x-www-form-urlencoded',
    'headers': headers,
    'payload' : payload
  };
  Logger.log(options);
  // 実際に送信する
  var response = UrlFetchApp.fetch(NOTIFY_API, options);
  Logger.log(response);
}

(3)保存する

3. プログラムを実行する

プログラムが書けたので、実行し、通知が来るかどうか確認します。

(1)プログラムを実行する。
実行タブ > 関数を実行 > translateDiaryIntoEnglish()をクリックして下さい。

すると、Googleの承認が必要ですというメッセージが出てくると思いますので、承認して下さい。

(2)LINEに通知が来るか確認する。
以下のような通知がLINE Notifyから届いていたらアプリの作成が完了となります。

(3)決まった時間に通知する設定を行う。
先ほどまでは手動でプログラムを実行しましたが、自動で実行を行うことができます。以下のように「時計マーク」をクリックし、「トリガーが設定...」リンクをクリックして下さい。その後、時間帯を設定し「保存」をクリックすると、指定した時間に通知が来ます。

以上です。

ご不明点やご要望等ありましたら、お気軽にお知らせください。

いいなと思ったら応援しよう!