みなさんこんにちは。ノンプログラマーのうえはらです。
前回は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;」でした。
本文訂正しております。
これで大丈夫と思うので、是非試して下さい!