回答編集履歴
4
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
下記のコード例では、datetime picker表示用に新たにpushDatePickerという関数を作っています。
|
2
2
|
|
3
|
-
日付を質問する時は、この関数に、表示させたいメッセージと一緒に
|
3
|
+
日付を質問する時は、この関数に、表示させたいメッセージと一緒にリプライトークンを渡すようにします。
|
4
4
|
|
5
5
|
```js
|
6
6
|
//開始日時の質問
|
3
修正
answer
CHANGED
@@ -1,17 +1,10 @@
|
|
1
|
-
datetime pickerを表示させる場合は、リプライではなくプッシュメッセージとして送信する必要があります。
|
2
|
-
プッシュメッセージ送信時にはユーザーIDが必要となるため
|
3
|
-
doPostで受け取ったイベントオブジェクトから、送信先のユーザーIDを取得しておきます。
|
4
|
-
```js
|
5
|
-
var userId = event.source.userId;
|
6
|
-
```
|
7
|
-
|
8
1
|
下記のコード例では、datetime picker表示用に新たにpushDatePickerという関数を作っています。
|
9
2
|
|
10
|
-
日付を質問する時は、この関数に、メッセージと一緒に取得した
|
3
|
+
日付を質問する時は、この関数に、表示させたいメッセージと一緒に取得したリプライトークンを渡すようにします。
|
11
4
|
|
12
5
|
```js
|
13
6
|
//開始日時の質問
|
14
|
-
pushDatePicker("開始日を入力してください",
|
7
|
+
pushDatePicker("開始日を入力してください", replyToken);
|
15
8
|
```
|
16
9
|
|
17
10
|
ユーザーがdatetime pickerを利用して日付を入力したときにGASに返ってくるデータは、リプライデータと構造が異なるため、冒頭で条件分岐しています。
|
@@ -53,7 +46,6 @@
|
|
53
46
|
function doPost(e) {
|
54
47
|
var event = JSON.parse(e.postData.contents).events[0]
|
55
48
|
var replyToken = event.replyToken;
|
56
|
-
var userId = event.source.userId;
|
57
49
|
var eventtype = event.type;
|
58
50
|
if (typeof replyToken === 'undefined') {
|
59
51
|
return;
|
@@ -72,7 +64,7 @@
|
|
72
64
|
if (messageText === "予定の追加") {
|
73
65
|
cache.put("type", 1);
|
74
66
|
//開始日時の質問
|
75
|
-
pushDatePicker("開始日を入力してください",
|
67
|
+
pushDatePicker("開始日を入力してください", replyToken);
|
76
68
|
//今日、7日間の予定の取得
|
77
69
|
} else if (messageText.match("今日の予定")) {
|
78
70
|
reply(replyToken, getEvents());
|
@@ -102,7 +94,9 @@
|
|
102
94
|
//終了日時の質問
|
103
95
|
var year = new Date().getFullYear();
|
104
96
|
var startDate = new Date(year, cache.get("start_month") - 1, cache.get("start_day"));
|
105
|
-
pushDatePicker("開始日は\n"+ EventFormat(startDate) + "\nですね。\n\n次に予定の終了日時をお知らせください。", userId);
|
97
|
+
//pushDatePicker("開始日は\n"+ EventFormat(startDate) + "\nですね。\n\n次に予定の終了日時をお知らせください。", userId);
|
98
|
+
pushDatePicker("次に終了日を入力してください。", replyToken);
|
99
|
+
|
106
100
|
break;
|
107
101
|
} else {
|
108
102
|
reply(replyToken, "予定追加処理中です。\n「キャンセル」\nで追加作業をキャンセルします。");
|
@@ -154,8 +148,8 @@
|
|
154
148
|
}
|
155
149
|
|
156
150
|
|
157
|
-
function pushDatePicker(message,
|
151
|
+
function pushDatePicker(message, replyToken) {
|
158
|
-
|
152
|
+
var url = "https://api.line.me/v2/bot/message/reply";
|
159
153
|
UrlFetchApp.fetch(url, {
|
160
154
|
"headers": {
|
161
155
|
"Content-Type": "application/json; charset=UTF-8",
|
@@ -163,7 +157,7 @@
|
|
163
157
|
},
|
164
158
|
"method": "post",
|
165
159
|
"payload": JSON.stringify({
|
166
|
-
"
|
160
|
+
"replyToken": replyToken,
|
167
161
|
"messages": [
|
168
162
|
{
|
169
163
|
"type": "template",
|
@@ -184,7 +178,7 @@
|
|
184
178
|
"actions": [
|
185
179
|
{
|
186
180
|
"type": "datetimepicker",
|
187
|
-
"label": "
|
181
|
+
"label": "ここをタップ",
|
188
182
|
"data": "action=settime",
|
189
183
|
"mode": "datetime",
|
190
184
|
"initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),
|
2
answer
CHANGED
@@ -36,8 +36,8 @@
|
|
36
36
|
```
|
37
37
|
|
38
38
|
pushDatePicker関数で記事のコードから変えたのは、
|
39
|
-
・初期値を現在日時とするようにした。
|
40
|
-
・
|
39
|
+
・初期値を現在日時とするようにした。 (`"initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),`)
|
40
|
+
・メッセージを変数にした
|
41
41
|
・最大・最小は不要なのでコメントアウト
|
42
42
|
等です。
|
43
43
|
|
1
answer
CHANGED
@@ -16,8 +16,7 @@
|
|
16
16
|
|
17
17
|
ユーザーがdatetime pickerを利用して日付を入力したときにGASに返ってくるデータは、リプライデータと構造が異なるため、冒頭で条件分岐しています。
|
18
18
|
datetime picker経由で入力されたデータか否かは、イベントタイプがpostbackかどうかで判断できます。
|
19
|
-
(ここでは、
|
20
|
-
イベントタイプが"postback"であればdatetime picker経由で入力されたデータ
|
19
|
+
(ここでは、イベントタイプが"postback"であれば datetime picker経由で入力されたデータ
|
21
20
|
そうでなければ、通常のリプライデータ)
|
22
21
|
|
23
22
|
```js
|
@@ -38,8 +37,8 @@
|
|
38
37
|
|
39
38
|
pushDatePicker関数で記事のコードから変えたのは、
|
40
39
|
・初期値を現在日時とするようにした。
|
41
|
-
・メッセージを変数にした
|
40
|
+
・メッセージを変数にした (`"initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),`)
|
42
|
-
・最大・最小は不要なのでコメントアウト
|
41
|
+
・最大・最小は不要なのでコメントアウト
|
43
42
|
等です。
|
44
43
|
|
45
44
|
---
|
@@ -51,7 +50,7 @@
|
|
51
50
|
略
|
52
51
|
|
53
52
|
//受け取ったメッセージの処理
|
54
|
-
function
|
53
|
+
function doPost(e) {
|
55
54
|
var event = JSON.parse(e.postData.contents).events[0]
|
56
55
|
var replyToken = event.replyToken;
|
57
56
|
var userId = event.source.userId;
|
@@ -204,7 +203,7 @@
|
|
204
203
|
|
205
204
|
}
|
206
205
|
|
207
|
-
|
206
|
+
createData(cache)他
|
208
|
-
略 (現状から変えなくてよいはず)
|
207
|
+
--->略 (現状から変えなくてよいはず)
|
209
|
-
|
208
|
+
|
210
209
|
```
|