前提・実現したいこと
SlackBotをGoogle Apps Scriptで作っています。
以下のページを参考に、yahooの運行情報から指定した路線の運行情報を、指定したチャンネルに投稿するbotを作ろうとしています。
発生している問題・エラーメッセージ
function postMessage実行時に以下のエラーが発生します。(なおfunction trainlateについてはエラーが発生していないようです)
https://hooks.slack.com/services/hogehoge (SlackAPIで取得したWebhookURL)のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: missing_text_or_fallback_or_attachments(応答の全文を見るには muteHttpExceptions オプションを使用してください)(行 65、ファイル「コード」)
該当のソースコード
1var response = UrlFetchApp.fetch('https://hooks.slack.com/services/hogehoge',options);
ソースコード全体
1function trainlate() { 2 3 var currentDate = new Date(); 4 var weekday = currentDate.getDay(); 5 var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分'); 6 7 if (weekday == 0 || weekday == 6) { 8 return; 9 } 10 var calendar = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com'); 11 if (calendar.getEventsForDay(currentDate, {max: 1}).length > 0) { 12 return; 13 } 14 15 //soubu line info 16 var yahoodata = UrlFetchApp.fetch("https://transit.yahoo.co.jp/traininfo/detail/40/0/").getContentText(); 17 if(yahoodata.indexOf('現在、事故・遅延に関する情報はありません') > -1){ 18 // match the word 19 }else{ 20 //get error info 21 var yahoodatastart = yahoodata.indexOf('og:description" content="'); 22 //4 japanese word only 23 yahoodatastart += 25; 24 var yahoodataend = yahoodata.indexOf('の情報です。'); 25 var yahoodataoutput = yahoodata.substring(yahoodatastart, yahoodataend); 26 27 postMessage("\n" + "◆総武線 " + date + yahoodataoutput + "\n",'https://hooks.slack.com/services/hogehoge'); 28 } 29 30 31 //tokrometro tozai line info 32 var yahoodata2 = UrlFetchApp.fetch("https://transit.yahoo.co.jp/traininfo/detail/135/0/").getContentText(); 33 if(yahoodata2.indexOf('現在、事故・遅延に関する情報はありません') > -1){ 34 // match the word 35 }else{ 36 //get error info 37 var yahoodatastart2 = yahoodata2.indexOf('og:description" content="'); 38 //4 japanese word only 39 yahoodatastart2 += 25; 40 var yahoodataend2 = yahoodata2.indexOf('の情報です。'); 41 var yahoodataoutput2 = yahoodata2.substring(yahoodatastart2, yahoodataend2); 42 43 postMessage("\n" + "◆東京メトロ東西線 " + date + yahoodataoutput2 + "\n",'https://hooks.slack.com/services/hogehoge'); 44 45 } 46 47 48} 49 50 51function postMessage(message, hookPoint){ 52 var payload = { 53 "text": message, 54 "channelId": '#train_info', 55 "userName": 'train_info', 56 "icon_emoji": ':train:' 57 } 58 var options = { 59 "method": "POST", 60 "payload": JSON.stringify(payload), 61 "headers": { 62 "Content-type": "application/json", 63 } 64 } 65 var response = UrlFetchApp.fetch('https://hooks.slack.com/services/hogehoge',options); 66 67 if (response.getResponseCode() == 200) { 68 return response; 69 } 70 return false; 71}
試したこと
ネットの海をさまよい、これがhttp400エラーに同じ?ということはわかったのですが、何をどう間違えたのか全く分からずにいます。というのも、GASに対する知識もSlackBotに対する知識もないド素人のためです……。
ド素人がわからんことをするんではない!という批判は甘んじて受けますが・・・対処法ご教示願えますと幸いです。
追記
以下追記してログを表示したところ"undefined"と出てしまいました。
1Logger.log(message);

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