teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

書式の改善

2019/10/09 07:48

投稿

ciipao777
ciipao777

スコア5

title CHANGED
File without changes
body CHANGED
@@ -8,74 +8,96 @@
8
8
 
9
9
  ```
10
10
  GAS上:undefined からプロパティ「postData」を読み取れません。
11
- ※「公開、承認、URL貼り付け」は全て行われております。他に必要な作業はあるのでしょうか?
11
+ ※「公開、承認、URL貼り付け」は全て行われております。
12
+ 他に必要な作業はあるのでしょうか?
13
+
14
+ 又下記のコードはhttps://teratail.com/questions/172080?link=qa_related_pc
15
+ 上記リンク先のコードを使用しております。
16
+ ※質問者と回答者のコードを合わせたコード
12
17
  ```
13
18
 
14
19
  ### 該当のソースコード
15
20
 
16
21
  ```ここに言語名を入力
17
- var line_endpoint = 'https://api.line.me/v2/bot/message/reply';
18
-
19
- function doPost(e) {
20
- // JSONをパース
21
- var json = JSON.parse(e.postData.contents);
22
-
23
- // 送信されてきたメッセージを取得
24
- var user_message = json.events[0].message.text;
25
-
26
- // 返信するためのトークンを取得
27
- var reply_token= json.events[0].replyToken;
28
- if (typeof reply_token === 'undefined') {
29
- return;
30
- }
31
-
32
- // 返信するメッセージを配列で用意する
33
- var reply_messages;
34
- if ('はい' == user_message) {
35
- // 「ヘルプ」と入力されたときの返信メッセージ
36
- reply_messages = ["いいえ?"];
37
-
38
- } else if ('元気?' == user_message) {
39
- //「スプレッドシート」と入力されたときの処理
40
- reply_messages = ["元気だよ"];
41
-
42
- } else if ('何かあったの?' == user_message) {
43
- //「アイデア」と入力されたときの処理
44
- reply_messages = ["なにもないよ"];
45
-
46
- } else if ('すごい' == user_message) {
47
- //「アイデア」と入力されたときの処理
48
- reply_messages = ["すごくない"];
49
-
50
- } else {
51
- // アイデアやメモが入力されたときの処理
52
- reply_messages = ['応答E'];
53
- }
54
-
55
- // メッセージを返信
56
- var messages = reply_messages.map(function (v) {
57
- return {'type': 'text', 'text': v};
58
- });
59
- UrlFetchApp.fetch(line_endpoint, {
60
- 'headers': {
61
- 'Content-Type': 'application/json; charset=UTF-8',
62
- 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
63
- },
64
- 'method': 'post',
65
- 'payload': JSON.stringify({
66
- 'replyToken': reply_token,
67
- 'messages': messages,
68
- }),
69
- });
70
- return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
71
- }
22
+ var API_URL = 'https://api.line.me/v2/bot/message/reply'; //
23
+ var CHANNEL_ACCESS_TOKEN = 'XXXXXXXX';
24
+
25
+ function doPost(e) {
26
+
27
+ var user_message = '';
28
+ var user_message1 = '';
29
+
30
+ var reply_token= JSON.parse(e.postData.contents).events[0].replyToken;
31
+ if (typeof reply_token === 'undefined') {
32
+ return;
33
+ }
34
+
35
+
36
+ var message_type = JSON.parse(e.postData.contents).events[0].message.type;
37
+
38
+ if(message_type === 'text') {
39
+ var text_str = JSON.parse(e.postData.contents).events[0].message.text;
40
+ user_message = "success_message_1"
41
+
42
+ } else {
43
+ user_message == 'failure_message';
44
+ }
45
+
46
+
47
+ UrlFetchApp.fetch(API_URL, {
48
+ 'headers': {
49
+ 'Content-Type': 'application/json; charset=UTF-8',
50
+ 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
51
+ },
52
+ 'method': 'post',
53
+ 'payload': JSON.stringify({
54
+ 'replyToken': reply_token,
55
+ 'messages': [
56
+ {
57
+ 'type': 'こんにちは',
58
+ 'text': こんにちは,
59
+ },
60
+ {
61
+ 'type': 'ありがとう',
62
+ 'text': ありがとう,
63
+ },
64
+ {
65
+ 'type': 'ナイス',
66
+ 'text': ないす,
67
+ },
68
+ {
69
+ 'type': 'いいえ',
70
+ 'text': はい,
71
+ },
72
+ {
73
+ 'type': 'つまり',
74
+ 'text': それって,
75
+ },
76
+ ],
77
+ }),
78
+ });
79
+ return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
80
+ }
81
+
72
82
  ```
73
83
 
74
84
  ### 試したこと
75
85
 
76
86
  掲載されている4サイトのコードをコピペして試しましたが、すべて同じエラーが返されました。
77
87
  他の方の質問を見ても理解できませんでしたので新たに質問させて頂きます。
78
- 実行ボタンを押しても、line側からユーザーが指定した文字を送信しても既読スルー。
88
+ line側からユーザーが指定した文字を送信しても既読スルーになり、返しがありません
79
89
 
90
+ 調べて見たリンク
91
+ ・https://teratail.com/questions/172080?link=qa_related_pc
92
+ ※上記urlのコードをそのままコピペしてもundefined からプロパティ「postData」を読み取れません。と返されてしまいました。
93
+ ・https://teratail.com/questions/135617?link=qa_related_pc
94
+ ※GASを実行していませんか?と言う問いが理解できません。
95
+ ・https://qiita.com/t_gata/items/897936761695124ef920
96
+ ※上記リンク先のコードも試しましたがやはり、「postData」を読み取れません。と返されてしまいました。
80
97
 
98
+ なので、恐らく【var reply_token= JSON.parse(e.postData.contents).events[0].replyToken;】に関係するGAS上の設定なのかな、と思っています。
99
+
100
+ ご教授して頂けませんでしょうか。
101
+ お願い致します。
102
+
81
103
  ### 補足情報(FW/ツールのバージョンなど)

2

修正

2019/10/09 07:48

投稿

ciipao777
ciipao777

スコア5

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,6 @@
8
8
 
9
9
  ```
10
10
  GAS上:undefined からプロパティ「postData」を読み取れません。
11
- LINE上:Webhookが無効なHTTPステータスコードを返しました
12
11
  ※「公開、承認、URL貼り付け」は全て行われております。他に必要な作業はあるのでしょうか?
13
12
  ```
14
13
 

1

更に情報を追加

2019/10/09 06:43

投稿

ciipao777
ciipao777

スコア5

title CHANGED
File without changes
body CHANGED
@@ -2,25 +2,79 @@
2
2
 
3
3
  Google Apps ScriptとMessagingAPIを用いてLineのオウム返しBotを作成しています。
4
4
  又、応答させるBOTを作成しようとしております。
5
-
5
+ 以下、参照
6
+ https://www.pc-koubou.jp/magazine/22388#section04
6
7
  ### 発生している問題・エラーメッセージ
7
8
 
8
9
  ```
9
- undefined からプロパティ「postData」を読み取れません。
10
+ GAS上:undefined からプロパティ「postData」を読み取れません。
11
+ LINE上:Webhookが無効なHTTPステータスコードを返しました
10
12
  ※「公開、承認、URL貼り付け」は全て行われております。他に必要な作業はあるのでしょうか?
11
13
  ```
12
14
 
13
15
  ### 該当のソースコード
14
16
 
15
17
  ```ここに言語名を入力
18
+ var line_endpoint = 'https://api.line.me/v2/bot/message/reply';
19
+
16
- function doPost(e) {
20
+ function doPost(e) {
17
21
  // JSONをパース
18
22
  var json = JSON.parse(e.postData.contents);
23
+
24
+ // 送信されてきたメッセージを取得
25
+ var user_message = json.events[0].message.text;
26
+
27
+ // 返信するためのトークンを取得
28
+ var reply_token= json.events[0].replyToken;
29
+ if (typeof reply_token === 'undefined') {
30
+ return;
31
+ }
32
+
33
+ // 返信するメッセージを配列で用意する
34
+ var reply_messages;
35
+ if ('はい' == user_message) {
36
+ // 「ヘルプ」と入力されたときの返信メッセージ
37
+ reply_messages = ["いいえ?"];
38
+
39
+ } else if ('元気?' == user_message) {
40
+ //「スプレッドシート」と入力されたときの処理
41
+ reply_messages = ["元気だよ"];
42
+
43
+ } else if ('何かあったの?' == user_message) {
44
+ //「アイデア」と入力されたときの処理
45
+ reply_messages = ["なにもないよ"];
46
+
47
+ } else if ('すごい' == user_message) {
48
+ //「アイデア」と入力されたときの処理
49
+ reply_messages = ["すごくない"];
50
+
51
+ } else {
52
+ // アイデアやメモが入力されたときの処理
53
+ reply_messages = ['応答E'];
54
+ }
55
+
56
+ // メッセージを返信
57
+ var messages = reply_messages.map(function (v) {
58
+ return {'type': 'text', 'text': v};
59
+ });
60
+ UrlFetchApp.fetch(line_endpoint, {
61
+ 'headers': {
62
+ 'Content-Type': 'application/json; charset=UTF-8',
63
+ 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
64
+ },
65
+ 'method': 'post',
66
+ 'payload': JSON.stringify({
67
+ 'replyToken': reply_token,
68
+ 'messages': messages,
69
+ }),
70
+ });
71
+ return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
72
+ }
19
73
  ```
20
74
 
21
75
  ### 試したこと
22
76
 
23
- 4サイトのコードをコピペして試しましたが、すべて同じエラーが返されました。
77
+ 掲載されている4サイトのコードをコピペして試しましたが、すべて同じエラーが返されました。
24
78
  他の方の質問を見ても理解できませんでしたので新たに質問させて頂きます。
25
79
  実行ボタンを押しても、line側からユーザーが指定した文字を送信しても既読スルー。
26
80