GASでGoogleカレンダーの内容をLINEに通知するシステムを組んでいますが
https://api.line.me/v2/bot/message/push のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {"message":"The request body has 1 error(s)","details":[{"message":"May not be empty","property":"messages[0].text"}]}(応答の全文を見るには muteHttpExceptions オプションを使用してください)(行 47、ファイル「LINE通知」)
と出てしまい実行できません。
どのようにすれば実行できるようになるでしょうか?
GAS
1/*カレンダーのIDを取得*/ 2function get_Calendar() { 3 var arrCals=[]; 4 arrCals.push(CalendarApp.getCalendarById('カレンダーID'));//4名さま用卓 5 6 return arrCals; 7} 8 9/*今日の予定を取得するメインの関数*/ 10function get_Today_Schedule(){ 11 var arrCals = get_Calendar();//カレンダーID取得 12 var date = new Date() 13 var strIntro = "予約です。\n" ; 14 var strBody = strIntro; 15 16 sendLINE(strBody); 17} 18 19/*カレンダーのイベント取得*/ 20function getEvents(Cals,getDate){ 21 var arrEvents = Cals.getEventsForDay(getDate); 22 var strName = Cals.getName();//カレンダーの名前取得 23 var strEvents =""; 24 for (var i=0; i<arrEvents.length; i++){ 25 var strTitle = arrEvents[i].getTitle(); 26 var strStart = _HHmm(arrEvents[i].getStartTime());//開始時刻 27 var strEnd = _HHmm(arrEvents[i].getEndTime());//開始時刻 28 if (strStart == strEnd){ 29 strEvents = strEvents + '終日予約:' + strTitle + ' (' + strName + ')' + '\n'; 30 }else{ 31 strEvents = strEvents + strStart + '~' + strEnd+ ':' + strTitle + ' (' + strName + ')' + '\n'; 32 } 33 } 34 return strEvents; 35} 36 37/*時間の表示変更*/ 38function _HHmm(str){ 39 return Utilities.formatDate(str,'JST','HH:mm'); 40} 41 42function sendLINE(body){ 43 var LINE_CHANNEL_ACCESS_TOKEN = 'ほにゃ';//LINE Botのアクセストークン 44 var url = 'https://api.line.me/v2/bot/message/push'; 45 var toID = 'ほにゃ';//取得したグループID 46 47 UrlFetchApp.fetch(url, { 48 'headers': { 49 'Content-Type': 'application/json; charset=UTF-8', 50 'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN, 51 }, 52 'method': 'POST', 53 'payload': JSON.stringify({ 54 'to': toID, 55 'messages':[{ 56 'type': 'text', 57 'text': body , 58 }] 59 }) 60 }) 61}
こちらのコードは問題なく動きました⬇︎
GAS
1function sendLINE(){ 2 var LINE_CHANNEL_ACCESS_TOKEN = 'ほにゃ';//LINE Botのアクセストークン 3 var url = 'https://api.line.me/v2/bot/message/push'; 4 var toID = 'ほにゃ';//取得したグループID 5 6 var body = '送信テスト'; 7 8 UrlFetchApp.fetch(url, { 9 'headers': { 10 'Content-Type': 'application/json; charset=UTF-8', 11 'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN, 12 }, 13 'method': 'POST', 14 'payload': JSON.stringify({ 15 'to': toID, 16 'messages':[{ 17 'type': 'text', 18 'text': body , 19 }] 20 }) 21 }) 22}
やりたいことがわけわからなすぎるのですが、どれを実行しましたか?
あと、今このコードだと提示されたエラーにはならないように思えるので、エラーになったときのコードをお示しください
sendLINEを実行しました。
APIキーやID以外はこのコードです。
sendLineを実行したら、引数でわたってくるはずのbodyがわたってこず、空だから、エラーが出てるんですよ。
function test() {sendLINE('test');}
こんなやつを実行してやればいいはず。
常識的に考えて、get_Today_Scheduleを実行したと思いました。これはエラーにならないはずです。
結局どうしたいのですか?

回答1件
あなたの回答
tips
プレビュー