質問編集履歴

2

ありがとうございます。コード張りなおしました。

2021/09/05 23:02

投稿

bot_pat
bot_pat

スコア1

test CHANGED
File without changes
test CHANGED
@@ -12,177 +12,177 @@
12
12
 
13
13
  ```
14
14
 
15
+ ```### 該当のソースコード
16
+
17
+ // LINE Developerのアクセストークン
18
+
19
+ var access_token = "botトークン"
20
+
21
+ // リプライ先を特定するためのログ管理スプレッドシートID
22
+
23
+ var spreadsheet_id = "ログスプレッド"
24
+
25
+ // ご飯リストのスプレッドシートID
26
+
27
+ var gohan_spreadsheet_id = "曲URL保存スプレッド"
28
+
29
+
30
+
15
- エラーメッセージ
31
+ /**
32
+
33
+ reply
34
+
35
+ */
36
+
37
+ function reply(data) {
38
+
39
+ var url = "https://api.line.me/v2/bot/message/reply";
40
+
41
+ var headers = {
42
+
43
+ "Content-Type" : "application/json; charset=UTF-8",
44
+
45
+ 'Authorization': 'Bearer ' + access_token,
46
+
47
+ };
48
+
49
+ var text = "";
50
+
51
+
52
+
53
+ if (data.events[0].message.text === "今日の一曲") {
54
+
55
+ // ご飯リストスプレッドシートを取得
56
+
57
+ var gohan = SpreadsheetApp.openById(gohan_spreadsheet_id).getSheetByName("曲シート");
58
+
59
+ // A1セルから入力されている最終行まで一気に取得
60
+
61
+ var gohanData = gohan.getRange(1, 1, gohan.getLastRow());
62
+
63
+ // ランダムで候補を選ぶ
64
+
65
+ var intRandomNum = Math.round(Math.random()*gohan.getLastRow());
66
+
67
+
68
+
69
+ text = gohanData.getValues()[intRandomNum][0];
70
+
71
+ }
72
+
73
+ else {
74
+
75
+ text = ""
76
+
77
+ }
78
+
79
+
80
+
81
+ var postData = {
82
+
83
+ "replyToken" : data.events[0].replyToken,
84
+
85
+ "messages" : [
86
+
87
+ {
88
+
89
+ 'type':'text',
90
+
91
+ 'text':text,
92
+
93
+ }
94
+
95
+ ]
96
+
97
+ };
98
+
99
+
100
+
101
+ var options = {
102
+
103
+ "method" : "post",
104
+
105
+ "headers" : headers,
106
+
107
+ "payload" : JSON.stringify(postData)
108
+
109
+ };
110
+
111
+
112
+
113
+ return UrlFetchApp.fetch(url, options);
114
+
115
+ }
116
+
117
+
118
+
119
+ /**
120
+
121
+ LINEからのPOST受け取り
122
+
123
+ */
124
+
125
+ function doPost(e) {
126
+
127
+ // 投稿されたメッセージを取得
128
+
129
+ var json = JSON.parse(e.postData.contents);
130
+
131
+ var data = SpreadsheetApp.openById(spreadsheet_id).getSheetByName('log').getRange(1, 1).setValue(json.events);
132
+
133
+ reply(json);
134
+
135
+
136
+
137
+ if(userMessage.match(/^$/)) {
138
+
139
+ // $から始まるメッセージの場合、$を除いた文字列を再代入
140
+
141
+ userMessage = userMessage.substr(1);
142
+
143
+ } else {
144
+
145
+ // $から始まらない場合は何もしない(処理終了)
146
+
147
+ return;
148
+
149
+ }
150
+
151
+ var gohan_spreadsheet_id = "曲URL保存スプレッド"
152
+
153
+ var sheetName = "曲シート";
154
+
155
+ var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
156
+
157
+ var sheet = spreadsheet.getSheetByName(sheetName);
158
+
159
+
160
+
161
+ // 空白・タブ・改行で区切り配列に変換
162
+
163
+ var arr = userMessage.split(/\s/);
164
+
165
+
166
+
167
+ // セルの最下部に配列を転記
168
+
169
+  sheet.appendRow(arr);
170
+
171
+ // =======================================
172
+
173
+
174
+
175
+ return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
176
+
177
+
178
+
179
+ }
16
180
 
17
181
  ```
18
182
 
19
183
 
20
184
 
21
- ### 該当のソースコード
185
+
22
-
23
- // LINE Developerのアクセストークン
24
-
25
- var access_token = "botトークン"
26
-
27
- // リプライ先を特定するためのログ管理スプレッドシートID
28
-
29
- var spreadsheet_id = "ログスプレッド"
30
-
31
- // ご飯リストのスプレッドシートID
32
-
33
- var gohan_spreadsheet_id = "曲URL保存スプレッド"
34
-
35
-
36
-
37
- /**
38
-
39
- reply
40
-
41
- */
42
-
43
- function reply(data) {
44
-
45
- var url = "https://api.line.me/v2/bot/message/reply";
46
-
47
- var headers = {
48
-
49
- "Content-Type" : "application/json; charset=UTF-8",
50
-
51
- 'Authorization': 'Bearer ' + access_token,
52
-
53
- };
54
-
55
- var text = "";
56
-
57
-
58
-
59
- if (data.events[0].message.text === "今日の一曲") {
60
-
61
- // ご飯リストスプレッドシートを取得
62
-
63
- var gohan = SpreadsheetApp.openById(gohan_spreadsheet_id).getSheetByName("曲シート");
64
-
65
- // A1セルから入力されている最終行まで一気に取得
66
-
67
- var gohanData = gohan.getRange(1, 1, gohan.getLastRow());
68
-
69
- // ランダムで候補を選ぶ
70
-
71
- var intRandomNum = Math.round(Math.random()*gohan.getLastRow());
72
-
73
-
74
-
75
- text = gohanData.getValues()[intRandomNum][0];
76
-
77
- }
78
-
79
- else {
80
-
81
- text = ""
82
-
83
- }
84
-
85
-
86
-
87
- var postData = {
88
-
89
- "replyToken" : data.events[0].replyToken,
90
-
91
- "messages" : [
92
-
93
- {
94
-
95
- 'type':'text',
96
-
97
- 'text':text,
98
-
99
- }
100
-
101
- ]
102
-
103
- };
104
-
105
-
106
-
107
- var options = {
108
-
109
- "method" : "post",
110
-
111
- "headers" : headers,
112
-
113
- "payload" : JSON.stringify(postData)
114
-
115
- };
116
-
117
-
118
-
119
- return UrlFetchApp.fetch(url, options);
120
-
121
- }
122
-
123
-
124
-
125
- /**
126
-
127
- LINEからのPOST受け取り
128
-
129
- */
130
-
131
- function doPost(e) {
132
-
133
- // 投稿されたメッセージを取得
134
-
135
- var json = JSON.parse(e.postData.contents);
136
-
137
- var data = SpreadsheetApp.openById(spreadsheet_id).getSheetByName('log').getRange(1, 1).setValue(json.events);
138
-
139
- reply(json);
140
-
141
-
142
-
143
- if(userMessage.match(/^$/)) {
144
-
145
- // $から始まるメッセージの場合、$を除いた文字列を再代入
146
-
147
- userMessage = userMessage.substr(1);
148
-
149
- } else {
150
-
151
- // $から始まらない場合は何もしない(処理終了)
152
-
153
- return;
154
-
155
- }
156
-
157
- var gohan_spreadsheet_id = "曲URL保存スプレッド"
158
-
159
- var sheetName = "曲シート";
160
-
161
- var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
162
-
163
- var sheet = spreadsheet.getSheetByName(sheetName);
164
-
165
-
166
-
167
- // 空白・タブ・改行で区切り配列に変換
168
-
169
- var arr = userMessage.split(/\s/);
170
-
171
-
172
-
173
- // セルの最下部に配列を転記
174
-
175
-  sheet.appendRow(arr);
176
-
177
- // =======================================
178
-
179
-
180
-
181
- return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
182
-
183
-
184
-
185
- }
186
186
 
187
187
  ```ここに言語名を入力
188
188
 

1

2021/09/05 23:01

投稿

bot_pat
bot_pat

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  音楽URLをスプレッドシートよりLINEから受け取った特定のワードでランダムにURLをLINEに返し、かつ特定のワードを入力されたメッセージ+URLでスプレッドシートにURL部分のみを保存したい。
4
4
 
5
- ### 発生している問題・エラーメッセージ
5
+
6
6
 
7
7
  現在reply(json);を入れるか入れないかでどちらかの動きしかしてくれません。
8
8