回答編集履歴
4
誤字修正
test
CHANGED
@@ -99,7 +99,7 @@
|
|
99
99
|
}
|
100
100
|
```
|
101
101
|
進捗:実装完了
|
102
|
-
indexOf だとうまくいかず(こんにちわって言ってるのに倍返ししてくる)。リファレンスをみると、indexOfは、何
|
102
|
+
indexOf だとうまくいかず(こんにちわって言ってるのに倍返ししてくる)。リファレンスをみると、indexOfは、何文字目に同じ文字が来ているかを探すもののようなので、mach()を使ったらうまくいきました。
|
103
103
|
他、この回答のコメント欄にメッセージ差し上げます。
|
104
104
|
```GAS
|
105
105
|
function doPost(e) {
|
3
完成しました。
test
CHANGED
@@ -98,3 +98,51 @@
|
|
98
98
|
return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON);
|
99
99
|
}
|
100
100
|
```
|
101
|
+
進捗:実装完了
|
102
|
+
indexOf だとうまくいかず(こんにちわって言ってるのに倍返ししてくる)。リファレンスをみると、indexOfは、何行目に同じ文字が来ているかを探すもののようなので、mach()を使ったらうまくいきました。
|
103
|
+
他、この回答のコメント欄にメッセージ差し上げます。
|
104
|
+
```GAS
|
105
|
+
function doPost(e) {
|
106
|
+
let replyToken = JSON.parse(e.postData.contents).events[0].replyToken; //replyToken取得
|
107
|
+
let replytext = JSON.parse(e.postData.contents).events[0].message.text;//送信されたメッセージを取得
|
108
|
+
if (typeof replyToken === 'undefined') {
|
109
|
+
return;
|
110
|
+
}
|
111
|
+
|
112
|
+
let url = 'https://api.line.me/v2/bot/message/reply';
|
113
|
+
let channelToken = '';//チャンネルトークンとかそのへん。
|
114
|
+
|
115
|
+
let sh = SpreadsheetApp.openById("").getSheetByName("シート1"); //変数shにスプレッドシートの場所を保存(本来letではなくconstにすべき)
|
116
|
+
|
117
|
+
let lastRow = sh.getLastRow(); //データーの最終行を取得
|
118
|
+
let list = sh.getRange(1, 1, lastRow, 2).getValues(); //データーを2次元配列で格納
|
119
|
+
|
120
|
+
for (let index = 0; index < list.length; index++) {
|
121
|
+
if (replytext.match(list[index][0])) {
|
122
|
+
replytext = list[index][1];
|
123
|
+
}
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
var messages = [{
|
129
|
+
'type': 'text',
|
130
|
+
'text': replytext,
|
131
|
+
}];
|
132
|
+
|
133
|
+
UrlFetchApp.fetch(url, {
|
134
|
+
'headers': {
|
135
|
+
'Content-Type': 'application/json; charset=UTF-8',
|
136
|
+
'Authorization': 'Bearer ' + channelToken,
|
137
|
+
},
|
138
|
+
'method': 'post',
|
139
|
+
'payload': JSON.stringify({
|
140
|
+
'replyToken': replyToken,
|
141
|
+
'messages': messages,
|
142
|
+
}),
|
143
|
+
});
|
144
|
+
return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON);
|
145
|
+
}
|
146
|
+
```
|
147
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-25/6a710a80-ad1a-408a-ba14-e790e9e8907a.jpeg)
|
148
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-25/7512a73e-86ed-49a6-bbe7-2ec4b86f4d90.jpeg)
|
2
進捗追記
test
CHANGED
@@ -52,3 +52,49 @@
|
|
52
52
|
replytext
|
53
53
|
```
|
54
54
|
に、送信された文字列が落ちてきていることが確認できたため。 replytext の文章を、いまからスプレッドシートを比較して、それに応じて返答が変わるようにしていきます。
|
55
|
+
|
56
|
+
追記:進捗
|
57
|
+
A列と同じ文言についてはB列の言葉で返答するように構築(ここまでは質問者さんも実装済み)
|
58
|
+
```GAS
|
59
|
+
function doPost(e) {
|
60
|
+
let replyToken = JSON.parse(e.postData.contents).events[0].replyToken; //replyToken取得
|
61
|
+
let replytext = JSON.parse(e.postData.contents).events[0].message.text;//送信されたメッセージを取得
|
62
|
+
if (typeof replyToken === 'undefined') {
|
63
|
+
return;
|
64
|
+
}
|
65
|
+
|
66
|
+
let url = 'https://api.line.me/v2/bot/message/reply';
|
67
|
+
let channelToken = '';//チャンネルトークンとかそのへん。
|
68
|
+
|
69
|
+
let sh = SpreadsheetApp.openById("").getSheetByName("シート1"); //変数shにスプレッドシートの場所を保存(本来letではなくconstにすべき)
|
70
|
+
|
71
|
+
let lastRow = sh.getLastRow(); //データーの最終行を取得
|
72
|
+
let list = sh.getRange(1, 1, lastRow, 2).getValues(); //データーを2次元配列で格納
|
73
|
+
|
74
|
+
for (let index = 0; index < list.length; index++) {
|
75
|
+
if (replytext == list[index][0]) {
|
76
|
+
replytext = list[index][1];
|
77
|
+
}
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
var messages = [{
|
83
|
+
'type': 'text',
|
84
|
+
'text': replytext,
|
85
|
+
}];
|
86
|
+
|
87
|
+
UrlFetchApp.fetch(url, {
|
88
|
+
'headers': {
|
89
|
+
'Content-Type': 'application/json; charset=UTF-8',
|
90
|
+
'Authorization': 'Bearer ' + channelToken,
|
91
|
+
},
|
92
|
+
'method': 'post',
|
93
|
+
'payload': JSON.stringify({
|
94
|
+
'replyToken': replyToken,
|
95
|
+
'messages': messages,
|
96
|
+
}),
|
97
|
+
});
|
98
|
+
return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON);
|
99
|
+
}
|
100
|
+
```
|
1
実際に動くものを作りこんでいる進捗の報告
test
CHANGED
@@ -13,3 +13,42 @@
|
|
13
13
|
continue;
|
14
14
|
```
|
15
15
|
では?
|
16
|
+
|
17
|
+
追記:進捗
|
18
|
+
ご質問のコードでは、実行エラーになり。どの行で止まっているか判断つかないため。
|
19
|
+
https://first-contact.jp/blog/article/linebot/
|
20
|
+
こちらの情報を参考に1から作り直しています。
|
21
|
+
```GAS
|
22
|
+
function doPost(e) {
|
23
|
+
var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
|
24
|
+
var replytext = JSON.parse(e.postData.contents).events[0].message.text;
|
25
|
+
if (typeof replyToken === 'undefined') {
|
26
|
+
return;
|
27
|
+
}
|
28
|
+
|
29
|
+
var url = 'https://api.line.me/v2/bot/message/reply';
|
30
|
+
var channelToken = '';
|
31
|
+
|
32
|
+
var messages = [{
|
33
|
+
'type': 'text',
|
34
|
+
'text': replytext,
|
35
|
+
}];
|
36
|
+
|
37
|
+
UrlFetchApp.fetch(url, {
|
38
|
+
'headers': {
|
39
|
+
'Content-Type': 'application/json; charset=UTF-8',
|
40
|
+
'Authorization': 'Bearer ' + channelToken,
|
41
|
+
},
|
42
|
+
'method': 'post',
|
43
|
+
'payload': JSON.stringify({
|
44
|
+
'replyToken': replyToken,
|
45
|
+
'messages': messages,
|
46
|
+
}),
|
47
|
+
});
|
48
|
+
return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON);
|
49
|
+
```
|
50
|
+
このコードで 変数
|
51
|
+
```GAS
|
52
|
+
replytext
|
53
|
+
```
|
54
|
+
に、送信された文字列が落ちてきていることが確認できたため。 replytext の文章を、いまからスプレッドシートを比較して、それに応じて返答が変わるようにしていきます。
|