質問編集履歴
2
文言修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
時間指定なしのLINEBOTをGASで作成中です????
|
body
CHANGED
@@ -17,47 +17,8 @@
|
|
17
17
|
### 該当のソースコード
|
18
18
|
|
19
19
|
```ここに言語名を入力
|
20
|
-
var CHANNEL_ACCESS_TOKEN = "アクセストークン";
|
21
|
-
var dateExp = /(\d+)[/月](\d+)/;
|
22
20
|
|
23
|
-
//doPost関数(Lineからメッセージを受け取る)
|
24
|
-
function doPost(e) {
|
25
|
-
GetMessage(e);
|
26
|
-
}
|
27
21
|
|
28
|
-
//受け取ったメッセージの処理
|
29
|
-
function GetMessage(e) {
|
30
|
-
var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
|
31
|
-
if (typeof replyToken === 'undefined') {
|
32
|
-
return;
|
33
|
-
}
|
34
|
-
var messageText = JSON.parse(e.postData.contents).events[0].message.text;
|
35
|
-
var cache = CacheService.getScriptCache();
|
36
|
-
var type = cache.get("type");
|
37
|
-
|
38
|
-
if (type === null) {
|
39
|
-
//予定の追加
|
40
|
-
if (messageText === "予定の追加") {
|
41
|
-
cache.put("type", 1);
|
42
|
-
//開始日時の質問
|
43
|
-
replyPlans(replyToken, "予定日をいずれかの形式で教えてください。", "【06/18】", "【6月18日】などの形式なら大丈夫です!");
|
44
|
-
//今日、7日間の予定の取得
|
45
|
-
} else if (messageText.match("今日の予定")) {
|
46
|
-
reply(replyToken, getEvents());
|
47
|
-
} else if (messageText.match("今週の予定")) {
|
48
|
-
reply(replyToken, notifyWeekly());
|
49
|
-
} else {
|
50
|
-
//処理方法の返答
|
51
|
-
replyPlans(replyToken, "「予定の追加」で予定追加します", "「今日の予定」で今日の予定をお知らせします。", "「今週の予定」で7日間の予定をお知らせします。");
|
52
|
-
}
|
53
|
-
} else {
|
54
|
-
//キャンセル処理
|
55
|
-
if (messageText === "キャンセル") {
|
56
|
-
cache.remove("type");
|
57
|
-
reply(replyToken, "予定追加のキャンセルをしました");
|
58
|
-
return;
|
59
|
-
}
|
60
|
-
|
61
22
|
switch(type) {
|
62
23
|
case "1":
|
63
24
|
// 開始日時の追加
|
@@ -95,136 +56,7 @@
|
|
95
56
|
cache.put("title", messageText);
|
96
57
|
var [title, startDate] = createData(cache);
|
97
58
|
//予定追加の確認
|
98
|
-
replyPlans(replyToken, "予定名:" + title, "開始日時:\n" + EventFormat(startDate)+ "予定を追加しますか?\n 「はい」か「いいえ」で
|
59
|
+
replyPlans(replyToken, "予定名:" + title, "開始日時:\n" + EventFormat(startDate)+ "予定を追加しますか?\n 「はい」か「いいえ」で
|
99
|
-
break;
|
100
|
-
case "4":
|
101
|
-
if (messageText === "はい") {
|
102
|
-
cache.remove("type");
|
103
|
-
var [title, startDate] = createData(cache);
|
104
|
-
CalendarApp.getDefaultCalendar().createEvent(title, startDate);
|
105
|
-
reply(replyToken, "Googleカレンダーに予定を追加しました");
|
106
|
-
} else if (messageText === "いいえ") {
|
107
|
-
cache.remove("type");
|
108
|
-
reply(replyToken, "予定の追加をキャンセルしました。");
|
109
|
-
} else{
|
110
|
-
reply(replyToken, "「はい」か「いいで」でお答えください。");
|
111
|
-
break;
|
112
|
-
}
|
113
|
-
break;
|
114
|
-
|
115
|
-
|
116
|
-
}
|
117
|
-
}
|
118
|
-
}
|
119
|
-
|
120
|
-
function createData(cache) {
|
121
|
-
var year = new Date().getFullYear();
|
122
|
-
//var year = 2020;
|
123
|
-
var title = cache.get("title");
|
124
|
-
var startDate = new Date(year, cache.get("start_month") - 1, cache.get("start_day"));
|
125
|
-
return [title, startDate];
|
126
|
-
}
|
127
|
-
|
128
|
-
function EventFormat(Date) {
|
129
|
-
var y = Date.getFullYear();
|
130
|
-
var m = Date.getMonth() + 1;
|
131
|
-
var d = Date.getDate();
|
132
|
-
var w = Date.getDay();
|
133
|
-
var weekname = ['日', '月', '火', '水', '木', '金', '土'];
|
134
|
-
m = ('0' + m).slice(-2);
|
135
|
-
d = ('0' + d).slice(-2);
|
136
|
-
return y + '年' + m + '月' + d + '日 (' + weekname[w] + ')\n';
|
137
|
-
}
|
138
|
-
|
139
|
-
function replyPlans(replyToken, message, message2, message3) {
|
140
|
-
var url = "https://api.line.me/v2/bot/message/reply";
|
141
|
-
UrlFetchApp.fetch(url, {
|
142
|
-
"headers": {
|
143
|
-
"Content-Type": "application/json; charset=UTF-8",
|
144
|
-
"Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN,
|
145
|
-
},
|
146
|
-
"method": "post",
|
147
|
-
"payload": JSON.stringify({
|
148
|
-
"replyToken": replyToken,
|
149
|
-
"messages": [{
|
150
|
-
"type": "text",
|
151
|
-
"text": message,
|
152
|
-
},{
|
153
|
-
"type": "text",
|
154
|
-
"text": message2,
|
155
|
-
},{
|
156
|
-
"type": "text",
|
157
|
-
"text": message3,
|
158
|
-
}],
|
159
|
-
}),
|
160
|
-
});
|
161
|
-
return ContentService.createTextOutput(JSON.stringify({"content": "post ok"})).setMimeType(ContentService.MimeType.JSON);
|
162
|
-
}
|
163
|
-
|
164
|
-
function reply(replyToken, message) {
|
165
|
-
var url = "https://api.line.me/v2/bot/message/reply";
|
166
|
-
UrlFetchApp.fetch(url, {
|
167
|
-
"headers": {
|
168
|
-
"Content-Type": "application/json; charset=UTF-8",
|
169
|
-
"Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN,
|
170
|
-
},
|
171
|
-
"method": "post",
|
172
|
-
"payload": JSON.stringify({
|
173
|
-
"replyToken": replyToken,
|
174
|
-
"messages": [{
|
175
|
-
"type": "text",
|
176
|
-
"text": message,
|
177
|
-
}],
|
178
|
-
}),
|
179
|
-
});
|
180
|
-
return ContentService.createTextOutput(JSON.stringify({"content": "post ok"})).setMimeType(ContentService.MimeType.JSON);
|
181
|
-
}
|
182
|
-
|
183
|
-
//今日の予定
|
184
|
-
function getEvents() {
|
185
|
-
var events = CalendarApp.getDefaultCalendar().getEventsForDay(new Date());
|
186
|
-
var body = "今日の予定は";
|
187
|
-
|
188
|
-
if (events.length === 0) {
|
189
|
-
body += "ありません。";
|
190
|
-
return body;
|
191
|
-
}
|
192
|
-
|
193
|
-
body += "\n";
|
194
|
-
events.forEach(function(event) {
|
195
|
-
var title = event.getTitle();
|
196
|
-
body += "★" + title + "\n";
|
197
|
-
});
|
198
|
-
body += "です。";
|
199
|
-
return body;
|
200
|
-
}
|
201
|
-
|
202
|
-
//7日間の予定
|
203
|
-
function notifyWeekly() {
|
204
|
-
var body = "7日間の予定は\n";
|
205
|
-
var weekday = ["日", "月", "火", "水", "木", "金", "土"];
|
206
|
-
for ( var i = 0; i < 7; i++ ) {
|
207
|
-
|
208
|
-
var dt = new Date();
|
209
|
-
dt.setDate(dt.getDate()+i);
|
210
|
-
var events = CalendarApp.getDefaultCalendar().getEventsForDay(dt);
|
211
|
-
body += Utilities.formatDate(dt, "JST", '★ MM/dd(' + weekday[dt.getDay()] + ')') + "\n";
|
212
|
-
if (events.length === 0) {
|
213
|
-
body += "ありません。\n";
|
214
|
-
}
|
215
|
-
|
216
|
-
events.forEach(function(event) {
|
217
|
-
var title = event.getTitle();
|
218
|
-
body += title + "\n";
|
219
|
-
});
|
220
|
-
}
|
221
|
-
return body;
|
222
|
-
}
|
223
|
-
|
224
|
-
function HmFormat(date){
|
225
|
-
return Utilities.formatDate(date, "JST", "HH:mm");
|
226
|
-
}
|
227
|
-
|
228
60
|
```
|
229
61
|
|
230
62
|
### 試したこと
|
1
文言変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
時間指定なしのBOTが作りたいのですが
|
7
7
|
試行錯誤して試してもできません、、、
|
8
8
|
|
9
|
+
具体的にご回答いただけると助かります、、、、、、、
|
10
|
+
|
9
11
|
### 発生している問題・エラーメッセージ
|
10
12
|
|
11
13
|
```
|