みなさんこんにちは。ノンプログラマーのうえはらです。
前回はGoogle Apps ScriptでLINEのグループIDを確認しました。
今回はそのグループIDを利用して、LINEのグループにGoogle Apps Scriptからメッセージを送信します!
LINEに送信するスクリプト
下記がLINEのグループに送信するスクリプトです。
function sendLINE(){ var LINE_CHANNEL_ACCESS_TOKEN = 'XXX 実際はメチャクチャ長いです XXXX';//LINE Botのアクセストークン var url = 'https://api.line.me/v2/bot/message/push'; var toID = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';//前回取得したグループID var body = '送信テスト'; UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN, }, 'method': 'POST', 'payload': JSON.stringify({ 'to': toID, 'messages':[{ 'type': 'text', 'text': body , }] }) }) }
LINEでBotの設定ができていれば、さほど難しくないですね。
もちろん、パラメータの部分を全て理解しようと思えば大変です!
とりあえず、18行の[‘text’: body ,]の部分がメッセージとして送信されることがわかればいいと思います。
実際に、実行してみてLINEのグループに「送信テスト」が送信されれば成功です!
今日の予定を取得してLINEに送信
この記事と併せて、カレンダーから予定を取得してLINEに送るスクリプトは下記のようになります。
/*カレンダーのIDを取得*/ function get_Calendar() { var arrCals=[]; arrCals.push(CalendarApp.getCalendarById('*******@gmail.com')); arrCals.push(CalendarApp.getCalendarById('*******@group.calendar.google.com'));//小学校 arrCals.push(CalendarApp.getCalendarById('*******@group.calendar.google.com'));//中学校 arrCals.push(CalendarApp.getCalendarById('*******@group.calendar.google.com'));//PTA return arrCals; } /*今日の予定を取得するメインの関数*/ function get_Today_Schedule(){ var arrCals = get_Calendar();//カレンダーID取得 var date = new Date() var strIntro = "おはようございます。\n今日のうえはら家の予定です。\n" ; var strBody = strIntro; /*カレンダーの本日のイベント取得*/ for (var i = 0 ; i< arrCals.length ; i++){ strBody = strBody + getEvents(arrCals[i],date); } if (strBody == strIntro){ strBody = "おはようございます。\n今日のうえはら家の予定はありません。\n" ; } sendLINE(strBody); } /*カレンダーのイベント取得*/ function getEvents(Cals,getDate){ var arrEvents = Cals.getEventsForDay(getDate); var strName = Cals.getName();//カレンダーの名前取得 var strEvents =""; for (var i=0; i<arrEvents.length; i++){ var strTitle = arrEvents[i].getTitle(); var strStart = _HHmm(arrEvents[i].getStartTime());//開始時刻 var strEnd = _HHmm(arrEvents[i].getEndTime());//開始時刻 if (strStart == strEnd){ strEvents = strEvents + '終日イベント:' + strTitle + ' (' + strName + ')' + '\n'; }else{ strEvents = strEvents + strStart + '~' + strEnd+ ':' + strTitle + ' (' + strName + ')' + '\n'; } } return strEvents; } /*時間の表示変更*/ function _HHmm(str){ return Utilities.formatDate(str,'JST','HH:mm'); } function sendLINE(body){ var LINE_CHANNEL_ACCESS_TOKEN = 'XXX 実際はメチャクチャ長いです XXXX';//LINE Botのアクセストークン var url = 'https://api.line.me/v2/bot/message/push'; var toID = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';//前回取得したグループID UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN, }, 'method': 'POST', 'payload': JSON.stringify({ 'to': toID, 'messages':[{ 'type': 'text', 'text': body , }] }) }) }
前回、ログ表示していた部分をLINEへ送信する関数「sendLINE(strBody)」に変換します。
LINEに送信する関数では、送信するメッセージを引数で受けるので、その部分を変更しています。
これで、「get_Today_Schedule」を実行すると今日の予定が送信できます。
まとめ
今回はLINEのグループにGoogle Apps Scriptからメッセージを送信する方法をお伝えしました。
う~ん、技術的な内容はほぼ、伝えられていないですね(。pдq。)
次回は、Google Apps Scriptで一週間分の予定を取り出す方法をお伝えします。
連載目次:GASでGoogleカレンダーの予定をLINEに送る
GASでGoogleカレンダーの予定をLINEに送る方法をお伝えします。
配信内容は、下記の様にします。
1.毎朝(07:05)、その日の予定を配信する。
2.夕方(19:05)、向こう1週間の予定を配信する。
これで、予定を忘れる事もなくなるはず・・・。
コメント
まさにやろうとしていたことをやってくださっており、助かります。
コピペで運用しようとIDだったりトークンだったりを代入したのですが、ReferenceError: 「strBody」が定義されていません。(行 42、ファイル「コード」)が出てしまいます。自分なりに色々調べてみたのですが、解消できず。
ご助言いただけると助かります。
ひだりやま様、返信が遅くなり、申し訳ありません。
44行目は「return strBody;」ではなく、「return strEvents;」でした。
本文訂正しております。
これで大丈夫と思うので、是非試して下さい!