前提
GASでLINE公式に特定のワードを受信したらflexメッセージで返したい
実現したいこと
- GASを使用してflexで返信したい
発生している問題・エラーメッセージ
失敗しました(詳しいのは見れませんでした。)
該当のソースコード
gas
1 2// LINEチャネルのアクセストークン 3const LINE_TOKEN = 'アクセストークン'; // ここに「チャネルアクセストークン」を貼りつけます 4const LINE_URL = 'https://api.line.me/v2/bot/message/reply'; 5 6//postリクエストを受取ったときに発火する関数 7function doPost(e) { 8 9//ここで天気や運行状況を取得 10 11//メッセージ送信↓↓↓↓↓ 12 const event = JSON.parse(e.postData.contents).events[0]; 13 // LINE返信用のトークン 14 const replyToken = event.replyToken; 15 // ユーザーのメッセージを取得 16 const userMessage = event.message.text; 17 18 // 応答メッセージの内容 19 let messages = []; 20 if (userMessage === "天気") { 21 //問診テンプレート 22 messages = [ 23 { 24 type: 'flex', 25 altText:"天気予報", 26 contents:{flexメッセージの内容} 27 } 28 ]; 29 } else if (userMessage === "運行情報") { 30 messages = [ 31 { 32 type: 'flex', 33 altText:"運行情報", 34 contents: {flexメッセージの内容} 35}, 36 }, 37 ]; 38 } else { 39 40 } 41 //lineで返答する 42 UrlFetchApp.fetch(LINE_URL, { 43 'headers': { 44 'Content-Type': 'application/json; charset=UTF-8', 45 'Authorization': `Bearer ${LINE_TOKEN}`, 46 }, 47 'method': 'post', 48 'payload': JSON.stringify({ 49 'replyToken': replyToken, 50 'messages': messages, 51 }), 52 }); 53 ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON); 54}
試したこと
何を試したらいいのかわからなかったです。
補足情報(FW/ツールのバージョンなど)
参考サイト:せこしょーさん
ちなみに参考ブログのコードをコピペしても失敗しました。
至急と付けるのは自己中心的とみなされて逆効果です。
本当に至急であれば、しかるべき場所で依頼してください。
ご教授ありがとう御座います。
ご指摘いただいたところを修正しました。
> 失敗しました(詳しいのは見れませんでした。)
だけでは 状況がわかりませんので、どのような操作をして どのような状況になったのかを具体的に記載していただけないでしょうか。
ご連絡ありがとうございます。
webhookを利用して実際に受信時に動くので何も出てきません。
こちらから公式LINEに送信しても何も返ってこない状況です、
LINEから 送信すると既読がつく状態で返信がないという状況であれば、
・ 受け取った e の内容と処理が一致していない (たとえば、if 条件で メッセージが空欄になる)
・ UrlFetchApp.fetch を実行した結果がエラーになっている
等が考えられると思います。
e で受け取った内容や UrlFetchApp.fetch 実行後のレスポンスコード、送信している内容 等を ログに出力して確認するとどうなっているでしょうか。
CHERRYさまのご指示で解決できました
ありがとうございます。

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